Ensure that Figaro.adapter is set to Figaro::Rails::Application before the figaro Railtie is loaded #260
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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, theFigaro.adapter
is stillnil
, so it is lazily created as aFigaro::Application
. The Railtie then callsFigaro.load
on it, and it blows up asdefault_path
throws aNotImplementedError
.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.