Workarea is an enterprise-grade Ruby on Rails commerce platform
Patch release notes for Workarea 3.4.19.
Sprockets v4.0 was released on 10/8/2019, which removed the
.register_engine
method that is depended on by many extensions to
Sprockets at the current moment. Lock down Sprockets to v3.7.2 to avoid
these issues, which will show up when the app is loaded or tests are
run.
_id
Suffix Omitted From Customized FieldsWhen adding a customized field to a Customizations
class that ends in
_id
, Workarea was previously stripping this suffix from the computed
instance variable name that is converted into snake case from any kind
of input. This causes issues because the data doesn't appear to be
making it into customizations, but is really there under a different
instance variable name. To resolve the issue, Workarea now detects
whether a variable is already using snake case and leaves it
alone...only providing transformations for variable names that need it.
The admin toolbar is loaded within an <iframe>
, which makes Capybara unable
to determine when it's been loaded. As a result, Capybara attempts to perform
actions on the element when it has not fully loaded, which results in failing tests
on CI. While there doesn't seem to be a definitive solution to this issue, a
sleep
has been added prior to testing markup in the <iframe>
in order to get
tests passing for now. In the future, the admin toolbar will no longer be loaded
within an <iframe>
, which will avoid this problem by v3.6.
Faraday released breaking changes in v0.16.0 that were not properly supported by our required version of the Elasticsearch gem. This caused builds to fail with strange Faraday errors and an inability to connect to the server. Locking down Faraday to the latest v0.15 version has resolved the issues in builds.
A UX improvement to how changesets are ordered in the timeline. They will now be rendered in the following order:
Adding the same ID to a category product rule matching the product list
that contains it results in some wonky results coming back. This was
originally diagnosed as an issue when combining category rules, but in
reality, it has to do with an admin mis-using the product rules
interface and perhaps accidentally using the category's own ID in a
product rule. To prevent this from happening, Workarea now cleans the
current product_list.id
from the value if a category rule is created or
updated.
This magic attribute doesn't need to be calculated, it's the inverse of the aspect ratio we already have. Relying on the magic attributes for this would require re-saving each model instance.
A recent minor update to Faraday included breaking changes, causing errors in the build when used in conjunction with the Elasticsearch v5 gem, which should eventually update to address the changes. Until then, Workarea now depends on a locked-down Faraday v0.15.x, which avoids this error and helps you continue to deploy your lovely online store!
Add the storefront.checkout_confirmation_text
append point below the
workarea.storefront.checkouts.confirmation_text
copy in storefront.
ProductViewModel#default_category
now protects against a nil
value
for the default category before passing its value into a view model.
This caused an issue for a brand new install when no categories have
been added yet.
Due to the length of URLs being displayed on Order Attributes in the admin they will potentially break layout. Now they are displayed within a tooltip behind a "View" link click. The resulting tooltip will prompt the user to copy the contents of a text box containing the URL.
Fixes #60
The plugin template has been overhauled to work with open source-derived Workarea code, and some additional fixes for plugin developers to make things easier. A short list:
app/assets
1.0.0.pre
.gemspec
filescript/
directory, since we now use GitHub Actions for CI.gitignore
Populate the :image_inverse_aspect_ratio
automatically using
Dragonfly, in order to reduce the amount of requests made to S3 in order
to find out this information. This way, Dragonfly can store more assets
in the cache.
When inserting tags into a taggable document, make sure their values are unique. This addresses an issue where incorrect tag counts were being displayed on the storefront.
Patch release notes for Workarea 3.4.16.
It's currently possible to customize search queries that return an exact
match, but instead of seeing the customized results when you run the
query, you'll be redirected to the product page since the
StorefrontSearch::ExactMatches
middleware stops further middleware
from running and sets a redirect to the product path. To resolve the issue,
Workarea will now ignore this middleware if a customization is present
on the search response.
Discovered by Ryan Tulino of Syatt Media. Thanks Ryan!
Remove a check for whether a given audit log entry is #restorable?
in
on the /admin/trash page to prevent empty results clogging up the
pagination. Without this, admins will see blank pages if they delete
enough nav taxon/release records at the same time.
Additionally, due to render_activity_entry
rescuing a template error
to return a blank string, results were still being seen in the trash when
a model that doesn't explicitly have an activity partial defined is encountered.
To resolve this issue, models that are tracked by Mongoid::AuditLog
,
without an explicit activity partial defined will be rendered using a
generic partial, showing the class name and ID of the audited model, as
something to render in the listing so that pages of blank results aren't
shown.
Direct uploads can fail locally if your Workarea.config.host
is not
set to the domain you are currently using in the browser. To prevent
this, instead of reading from the configuration when ensuring CORS
headers on the S3 bucket, use the ActionDispatch::Request
from the
controller to determine the correct URL for CORS in this instance.
Addresses a problem whereby changing the domain (either accidentally or
on-purpose) causes direct uploads to fail, since it can't create the
proper CORS headers needed to transmit files into the bucket directly.
Ensure test only asserts product details in ProductSystemTest
.
Recently viewed products were being accidentally clicked on and thus the
incorrect information is being rendered to the screen, causing the test
to fail. Scope selectors to the product details component to avoid this.
Patch release notes for Workarea 3.4.15.
When a release is published, but has too many changes, it can cause a request timeout because it can't be fully published within the allotted 15 seconds in production. To prevent this, Workarea now runs all release publishing in a background job. The success flash message for when a release is published has been updated to inform users that changes may take a little while to apply.
Workarea's default values for the Money fields in Pricing::Override
didn't previously change currency when Money.default_currency
is
re-configured in process (like in the case of a multi-site application
with multiple currencies). Ensure that the correct currency is used by
using an Integer type as the default, which will get converted into a
Money type at runtime.
This existed for CI purposes on Bamboo, and we don't need it here after
moving to Github. It has been moved the workarea-ci
gem for backwards
compatibility.
The Workarea::SwappableList
class does not get duplicated correctly
when Workarea.config.deep_dup
is used. This was observed while using
multi-site and attempting to change a swappable list for only one site.
Define the #deep_dup
method to return a new object instead of referencing
the existing one.
Change the default admin password when an app is seeded. #branding
Fixes the URL used to download product images in seed data.
Fixed some installation issues with v3.4.12.
Patch release notes for Workarea 3.4.12. This is Workarea's first public release! As such, there are some larger changes worth noting when upgrading. Please read all these notes before updating your Gemfile!
Workarea out-of-the-box Rack::Attack configuration had hardcoded IP addresses
for our offices and AlertLogic. Those have been removed and replaced with an
ENV variable to configure it. Use WORKAREA_RACK_ATTACK_IGNORE_IP_ADDRESSES
to
specify ignored IP addresses like WORKAREA_RACK_ATTACK_IGNORE_IP_ADDRESSES=192.168.2/24,172.16.254.1
To add a better demo and public-facing sample data, some of the seed data for Workarea has been reworked. You'll want to use pay special attention to the diff when using the upgrade tool if you've customized the seed data.
This gem was written specifically for the Workarea Commerce Cloud hosting, so
it doesn't make much sense for the public version. We've removed this gem from
the repository. The gem is still available on the Workarea gem server, so all
you need to do is add gem 'workarea-ci'
to your Gemfile after upgrading.
Improve the user experience when checkout cannot complete due to the site having no available shipping options for the user's shipping address.
It was formerly possible to generate a Pricing::Price
that had a
negative value in seeds. The ProductsSeeds#perform
method now protects
against this.
This test did not pass in the real world when new locales are added.
Previously, I18n.for_each_locale
did not iterate over all locales because
the locale was added to the wrong configuration setting. The test was
updated to use Rails.application.config.i18n
to better simulate what
is used in the real world, but it was soon discovered that i18n
fallbacks work in a very strange way compared to the rest of the gem.
Because we can't guarantee that we need to include the I18n::Backend::Fallbacks
module at the time of app initialization, we can't guarantee that
fallbacks will be supported in the Pricing::SkuTest
, so #test_active_prices
has been removed for the time being. This test was mostly ensuring the
functionality of i18n fallbacks rather than how our system handles them.
Discovered by Devan Hurst of Bounteous. Thanks Devan!
When using a $divide
operation in a MongoDB aggregation, neither
number can equal 0 otherwise Mongo will throw an OperationFailure
error. This has been avoided by filtering out any records where numbers
that we divide are zero across the board. This error can typically
happen when first developing an application. In addition, the
unneeded SearchesWithoutResults
report has been removed.
The /orders/status/:order_id/:postal_code
was being resolved by the
#show
action of OrdersController, when it really should be served by
#lookup
. Change the route and add a test ensuring that the route is
being handled properly.
Discovered by Andy Sides of BVAccel. Thanks Andy!
Move the admin.shipping_details append point from shippings#show
(which is no longer rendered) over to shippings#index
. Remove the
shippings#show
partial to reduce confusion since it is no longer being
used.
When an Internal Server Error is requested via /500.json
, another
error occurs when attempting to render the view for that request,
because there's no internal
template. This is not how our error
handler is supposed to work, any format should be acceptable to render a
404 or 500. The syntax of the respond_to
block in #render_error_page
has been altered so that Workarea serves the custom content HTML when an
HTML error occurs (e.g., most user-facing browser errors), and an empty
body with a 500 error in the status code is returned for all other
formats.
It's an unlucky number, what did you expect?