diff --git a/railties/CHANGELOG.md b/railties/CHANGELOG.md index 8163b282aafd87b10a20c5735cdb7ed26ba8efd5..264e72bc59566ef05c60c8cececfde782336d406 100644 --- a/railties/CHANGELOG.md +++ b/railties/CHANGELOG.md @@ -1,3 +1,7 @@ +* Add `-e/--environment` option to `rails initializers`. + + *Yuji Yaginuma* + ## Rails 6.0.0.beta3 (March 11, 2019) ## * No changes. diff --git a/railties/lib/rails/commands/initializers/initializers_command.rb b/railties/lib/rails/commands/initializers/initializers_command.rb index 33596177afc1649f8aa022609d7ce033d9f59ec7..bd2f3bed6770333dcf940ad64a3dcb0da1671b2e 100644 --- a/railties/lib/rails/commands/initializers/initializers_command.rb +++ b/railties/lib/rails/commands/initializers/initializers_command.rb @@ -1,10 +1,17 @@ # frozen_string_literal: true +require "rails/command/environment_argument" + module Rails module Command class InitializersCommand < Base # :nodoc: + include EnvironmentArgument + desc "initializers", "Print out all defined initializers in the order they are invoked by Rails." def perform + extract_environment_option_from_argument + ENV["RAILS_ENV"] = options[:environment] + require_application_and_environment! Rails.application.initializers.tsort_each do |initializer| diff --git a/railties/test/commands/initializers_test.rb b/railties/test/commands/initializers_test.rb index bdfbb3021c32cfea3e593d19a7e64a5a101de437..793365ef3dc3bb8b8d96cb673eb3caa9d2737009 100644 --- a/railties/test/commands/initializers_test.rb +++ b/railties/test/commands/initializers_test.rb @@ -25,8 +25,24 @@ class Rails::Command::InitializersTest < ActiveSupport::TestCase assert final_output.include?("set_added_test_module") end + + test "prints out initializers only specified in environment option" do + add_to_config <<-RUBY + initializer(:set_added_development_module) { } if Rails.env.development? + initializer(:set_added_production_module) { } if Rails.env.production? + RUBY + + output = run_initializers_command.split("\n") + assert_includes output, "AppTemplate::Application.set_added_development_module" + assert_not_includes output, "AppTemplate::Application.set_added_production_module" + + output = run_initializers_command(["-e", "production"]).split("\n") + assert_not_includes output, "AppTemplate::Application.set_added_development_module" + assert_includes output, "AppTemplate::Application.set_added_production_module" + end + private - def run_initializers_command - rails "initializers" + def run_initializers_command(args = []) + rails "initializers", args end end