figaro icon indicating copy to clipboard operation
figaro copied to clipboard

Ensure that Figaro.adapter is set to Figaro::Rails::Application before the figaro Railtie is loaded

Open hlascelles opened this issue 7 years ago • 2 comments

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 avatar Feb 16 '17 11:02 hlascelles

@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.

joehorsnell avatar Feb 16 '17 11:02 joehorsnell

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

hlascelles avatar Nov 30 '22 22:11 hlascelles