This gem contains common runtime functionality for Solidus extensions.
If you are looking for development tools instead, see solidus_dev_support.
Rails >= 5 introduced the concept of specifying what Rails version your migration was written for,
ActiveRecord::Migration[5.0]. Not specifying a version is deprecated in Rails 5.0 and removed
in Rails 5.1. This wasn't backported to Rails 4.2, so we provide this helper to return the right
# On Rails 4.2 SolidusSupport::Migration[4.2] # returns `ActiveRecord::Migration` SolidusSupport::Migration[5.0] # errors # On Rails 5.0 SolidusSupport::Migration[4.2] # same as `ActiveRecord::Migration[4.2]` SolidusSupport::Migration[5.0] # same as `ActiveRecord::Migration[5.0]`
There's no reason to use
it is provided.
This extension provides a module that decorates
Rails::Engine to seamlessly support autoloading
decorators both with the classic autoloader and with Zeitwerk on Rails 6. In order to use it, just
include the provided module in your
module SolidusExtensionName class Engine < Rails::Engine engine_name 'solidus_extension_name' include SolidusSupport::EngineExtensions # ... end end
If needed, also ensure to remove the original implementation of
def self.activate Dir.glob(File.join(root, "app/**/*_decorator*.rb")) do |c| Rails.configuration.cache_classes ? require(c) : load(c) end end config.to_prepare(&method(:activate).to_proc)
Loading files conditionally
If you include
EngineExtensions in your extension and structure your files according to the
expected paths, they will be loaded automagically only when the relevant Solidus engines are
Here's what an example structure may look like:
lib/views/backend: will only be added to the view paths when
lib/controllers/backend: will only be added to the controller paths when
lib/decorators/backend: will only be added to the decorator paths when
The same goes for
We strongly recommend following this structure and making your extensions so that they're not
dependent on anything other than
solidus_core, only augmenting the functionality of the other
engines when they are available.
To install this gem onto your local machine, run
bundle exec rake install. To release a new
version, update the version number in
version.rb, and then run
bundle exec rake release, which
will create a git tag for the version, push git commits and tags, and push the
.gem file to
Bug reports and pull requests are welcome on GitHub at https://github.com/solidusio/solidus_support.