figaro
figaro copied to clipboard
Ensure that Figaro.adapter is set to Figaro::Rails::Application before the figaro Railtie is loaded
Figaro should be able to be used in the initializer of a Rails engine. Unfortunately, when testing the engine using a tool like Combustion, we see that the Railtie to load figaro is added immediately after the definition of Figaro::Rails::Application
.
This can (and sometimes does) mean that the before_configuration
block of that Railtie is immediately executed. At this point, the Figaro.adapter
is still nil
, so it is lazily created as a Figaro::Application
. The Railtie then calls Figaro.load
on it, and it blows up as default_path
throws a NotImplementedError
.
The solution is to set the adapter to a Figaro::Rails::Application
as soon as possible, and before the Railtie is created.
This PR makes that 2 line swap change, and adds Combustion to the specs. If the two lines of logic are not swapped, you can see how the initializing process fails.
@hlascelles - your builds are failing because the Travis config picks up different Bundler gemfiles for different Ruby versions (in figaro/gemfiles
) so you'll need to add combustion
to each of those.
This change has been extracted and added (https://github.com/hlascelles/figjam/pull/7) to a fork and continuation of this repo, and a new gem called Figjam: https://github.com/hlascelles/figjam