diff --git a/lib/combustion.rb b/lib/combustion.rb index ca7e3f7..383f157 100644 --- a/lib/combustion.rb +++ b/lib/combustion.rb @@ -45,12 +45,18 @@ module Configurations def self.initialize!(*modules, &block) self.setup_environment = block if block_given? + Rails.env ||= ENV["RAILS_ENV"] || "test" + options = modules.extract_options! modules = AVAILABLE_MODULES if modules == [:all] modules.each { |mod| require MODULES.fetch(mod, "#{mod}/railtie") } Bundler.require :default, Rails.env + # intentionally required only after we load framework, to avoid recent Rails + # order-of-load warnings on initializers etc. + require "combustion/application" + Combustion::Application.configure_for_combustion include_database modules, options Combustion::Application.initialize! @@ -93,5 +99,7 @@ def self.include_capybara_into(config) require "combustion/configurations/action_mailer" require "combustion/configurations/active_record" require "combustion/configurations/active_storage" -require "combustion/application" require "combustion/database" + +# combustion/application is intentionally required lazily in #initialize!, not +# on boot to avoid recent Rails order-of-load warnings. diff --git a/lib/combustion/application.rb b/lib/combustion/application.rb index 8ac08b6..368699f 100644 --- a/lib/combustion/application.rb +++ b/lib/combustion/application.rb @@ -2,7 +2,7 @@ require "securerandom" require "digest" -Rails.env = ENV["RAILS_ENV"] || "test" +Rails.env ||= ENV["RAILS_ENV"] || "test" module Combustion class Application < Rails::Application