Workarea 3.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!

Remove hardcoded ignored Rack::Attack IP addresses

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

Updated seed data

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.

Removal of the workarea-ci gem

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.

Display Relevant Flash Message When No Shipping Options Are Available

Improve the user experience when checkout cannot complete due to the site having no available shipping options for the user's shipping address.

Issues

Pull Requests

Disallow Negative Prices in Seed Data

It was formerly possible to generate a Pricing::Price that had a negative value in seeds. The ProductsSeeds#perform method now protects against this.

Issues

Pull Requests

Remove Test for Active Prices in Locale

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!

Issues

Pull Requests

Filter Blank Data From All Reports

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.

Issues

Pull Requests

Fix Order Status Lookup Route

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!

Issues

Pull Requests

Render Shipping Details Append Point On Index

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.

Issues

Pull Requests

Fix Internal Server Error Page Not Rendering JSON

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.

Issues

Pull Requests

Now on GitHub