Add -e/--environment option to `rails initializers`

This allows specifying the environment as would any other rails commands.
This commit is contained in:
yuuji.yaginuma 2019-03-16 09:57:12 +09:00
parent a47c84d584
commit 6f94260ac6
3 changed files with 29 additions and 2 deletions

View File

@ -1,3 +1,7 @@
* Add `-e/--environment` option to `rails initializers`.
*Yuji Yaginuma*
## Rails 6.0.0.beta3 (March 11, 2019) ##
* No changes.

View File

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

View File

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