diff options
Diffstat (limited to 'railties/lib')
-rw-r--r-- | railties/lib/rails/application.rb | 2 | ||||
-rw-r--r-- | railties/lib/rails/code_statistics.rb | 6 | ||||
-rw-r--r-- | railties/lib/rails/commands/commands_tasks.rb | 114 | ||||
-rw-r--r-- | railties/lib/rails/commands/common_commands_tasks.rb | 68 | ||||
-rw-r--r-- | railties/lib/rails/commands/dbconsole.rb | 2 | ||||
-rw-r--r-- | railties/lib/rails/commands/plugin.rb | 2 | ||||
-rw-r--r-- | railties/lib/rails/commands/rake_proxy.rb | 2 | ||||
-rw-r--r-- | railties/lib/rails/engine.rb | 6 | ||||
-rw-r--r-- | railties/lib/rails/engine/commands_tasks.rb | 112 | ||||
-rw-r--r-- | railties/lib/rails/generators.rb | 4 | ||||
-rw-r--r-- | railties/lib/rails/generators/base.rb | 2 | ||||
-rw-r--r-- | railties/lib/rails/generators/named_base.rb | 4 | ||||
-rw-r--r-- | railties/lib/rails/generators/rails/app/app_generator.rb | 3 | ||||
-rw-r--r-- | railties/lib/rails/info_controller.rb | 8 | ||||
-rw-r--r-- | railties/lib/rails/mailers_controller.rb | 6 | ||||
-rw-r--r-- | railties/lib/rails/tasks/routes.rake | 2 |
16 files changed, 156 insertions, 187 deletions
diff --git a/railties/lib/rails/application.rb b/railties/lib/rails/application.rb index 9c150965bf..b01196e3ed 100644 --- a/railties/lib/rails/application.rb +++ b/railties/lib/rails/application.rb @@ -87,6 +87,7 @@ module Rails super Rails.app_class = base add_lib_to_load_path!(find_root(base.called_from)) + ActiveSupport.run_load_hooks(:before_configuration, base) end def instance @@ -146,7 +147,6 @@ module Rails def run_load_hooks! # :nodoc: return self if @ran_load_hooks @ran_load_hooks = true - ActiveSupport.run_load_hooks(:before_configuration, self) @initial_variable_values.each do |variable_name, value| if INITIAL_VARIABLES.include?(variable_name) diff --git a/railties/lib/rails/code_statistics.rb b/railties/lib/rails/code_statistics.rb index f7e1b5194c..b3d88147a5 100644 --- a/railties/lib/rails/code_statistics.rb +++ b/railties/lib/rails/code_statistics.rb @@ -9,7 +9,7 @@ class CodeStatistics #:nodoc: "Job tests", "Integration tests"] - HEADERS = {lines: " Lines", code_lines: " LOC", classes: "Classes", methods: "Methods"} + HEADERS = { lines: " Lines", code_lines: " LOC", classes: "Classes", methods: "Methods" } def initialize(*pairs) @pairs = pairs @@ -32,7 +32,7 @@ class CodeStatistics #:nodoc: private def calculate_statistics - Hash[@pairs.map{|pair| [pair.first, calculate_directory_statistics(pair.last)]}] + Hash[@pairs.map { |pair| [pair.first, calculate_directory_statistics(pair.last)] }] end def calculate_directory_statistics(directory, pattern = /^(?!\.).*?\.(rb|js|coffee|rake)$/) @@ -70,7 +70,7 @@ class CodeStatistics #:nodoc: end def width_for(label) - [@statistics.values.sum {|s| s.send(label) }.to_s.size, HEADERS[label].length].max + [@statistics.values.sum { |s| s.send(label) }.to_s.size, HEADERS[label].length].max end def print_header diff --git a/railties/lib/rails/commands/commands_tasks.rb b/railties/lib/rails/commands/commands_tasks.rb index 02f6472330..43f9dd38f3 100644 --- a/railties/lib/rails/commands/commands_tasks.rb +++ b/railties/lib/rails/commands/commands_tasks.rb @@ -1,4 +1,6 @@ require "rails/commands/rake_proxy" +require "rails/commands/common_commands_tasks" +require "active_support/core_ext/string/strip" module Rails # This is a class which takes in a rails command and initiates the appropriate @@ -8,27 +10,10 @@ module Rails # it before they are run. class CommandsTasks # :nodoc: include Rails::RakeProxy + include Rails::CommonCommandsTasks attr_reader :argv - HELP_MESSAGE = <<-EOT -Usage: rails COMMAND [ARGS] - -The most common rails commands are: - generate Generate new code (short-cut alias: "g") - console Start the Rails console (short-cut alias: "c") - server Start the Rails server (short-cut alias: "s") - test Run tests (short-cut alias: "t") - dbconsole Start a console for the database specified in config/database.yml - (short-cut alias: "db") - new Create a new Rails application. "rails new my_app" creates a - new application called MyApp in "./my_app" - -All commands can be run with -h (or --help) for more information. - -In addition to those commands, there are: -EOT - ADDITIONAL_COMMANDS = [ [ "destroy", 'Undo code generated with "generate" (short-cut alias: "d")' ], [ "plugin new", "Generates skeleton for developing a Rails plugin" ], @@ -36,34 +21,14 @@ EOT 'Run a piece of code in the application environment (short-cut alias: "r")' ] ] - COMMAND_WHITELIST = %w(plugin generate destroy console server dbconsole runner new version help test) - def initialize(argv) @argv = argv end - def run_command!(command) - command = parse_command(command) - - if COMMAND_WHITELIST.include?(command) - send(command) - else - run_rake_task(command) - end - end - def plugin require_command!("plugin") end - def generate - generate_or_destroy(:generate) - end - - def destroy - generate_or_destroy(:destroy) - end - def console require_command!("console") options = Rails::Console.parse_arguments(argv) @@ -91,10 +56,6 @@ EOT end end - def test - require_command!("test") - end - def dbconsole require_command!("dbconsole") Rails::DBConsole.start @@ -112,16 +73,6 @@ EOT end end - def version - argv.unshift "--version" - require_command!("application") - end - - def help - write_help_message - write_commands ADDITIONAL_COMMANDS + formatted_rake_tasks - end - private def exit_with_initialization_warning! @@ -134,17 +85,6 @@ EOT argv.shift if argv.first && argv.first[0] != "-" end - def require_command!(command) - require "rails/commands/#{command}" - end - - def generate_or_destroy(command) - require "rails/generators" - require_application_and_environment! - Rails.application.load_generators - require_command!(command) - end - # Change to the application's path if there is no config.ru file in current directory. # This allows us to run `rails server` from other directories, but still get # the main config.ru and properly set the tmp directory. @@ -152,29 +92,45 @@ EOT Dir.chdir(File.expand_path("../../", APP_PATH)) unless File.exist?(File.expand_path("config.ru")) end + def commands + ADDITIONAL_COMMANDS + formatted_rake_tasks + end + + def command_whitelist + %w(plugin generate destroy console server dbconsole runner new version help test) + end + + def help_message + <<-EOT.strip_heredoc + Usage: rails COMMAND [ARGS] + + The most common rails commands are: + generate Generate new code (short-cut alias: "g") + console Start the Rails console (short-cut alias: "c") + server Start the Rails server (short-cut alias: "s") + test Run tests (short-cut alias: "t") + dbconsole Start a console for the database specified in config/database.yml + (short-cut alias: "db") + new Create a new Rails application. "rails new my_app" creates a + new application called MyApp in "./my_app" + + All commands can be run with -h (or --help) for more information. + + In addition to those commands, there are: + EOT + end + def require_application_and_environment! require APP_PATH Rails.application.require_environment! end - def write_help_message - puts HELP_MESSAGE - end - - def write_commands(commands) - width = commands.map { |name, _| name.size }.max || 10 - commands.each { |command| printf(" %-#{width}s %s\n", *command) } + def load_tasks + Rails.application.load_tasks end - def parse_command(command) - case command - when "--version", "-v" - "version" - when "--help", "-h" - "help" - else - command - end + def load_generators + Rails.application.load_generators end end end diff --git a/railties/lib/rails/commands/common_commands_tasks.rb b/railties/lib/rails/commands/common_commands_tasks.rb new file mode 100644 index 0000000000..c1484d7ae2 --- /dev/null +++ b/railties/lib/rails/commands/common_commands_tasks.rb @@ -0,0 +1,68 @@ +module Rails + module CommonCommandsTasks # :nodoc: + def run_command!(command) + command = parse_command(command) + + if command_whitelist.include?(command) + send(command) + else + run_rake_task(command) + end + end + + def generate + generate_or_destroy(:generate) + end + + def destroy + generate_or_destroy(:destroy) + end + + def test + require_command!("test") + end + + def version + argv.unshift "--version" + require_command!("application") + end + + def help + write_help_message + write_commands(commands) + end + + private + + def generate_or_destroy(command) + require "rails/generators" + require_application_and_environment! + load_generators + require_command!(command) + end + + def require_command!(command) + require "rails/commands/#{command}" + end + + def write_help_message + puts help_message + end + + def write_commands(commands) + width = commands.map { |name, _| name.size }.max || 10 + commands.each { |command| printf(" %-#{width}s %s\n", *command) } + end + + def parse_command(command) + case command + when "--version", "-v" + "version" + when "--help", "-h" + "help" + else + command + end + end + end +end diff --git a/railties/lib/rails/commands/dbconsole.rb b/railties/lib/rails/commands/dbconsole.rb index d79a88b025..66b7a14f16 100644 --- a/railties/lib/rails/commands/dbconsole.rb +++ b/railties/lib/rails/commands/dbconsole.rb @@ -152,7 +152,7 @@ module Rails dirs_on_path = ENV["PATH"].to_s.split(File::PATH_SEPARATOR) unless (ext = RbConfig::CONFIG["EXEEXT"]).empty? - commands = commands.map{|cmd| "#{cmd}#{ext}"} + commands = commands.map { |cmd| "#{cmd}#{ext}" } end full_path_command = nil diff --git a/railties/lib/rails/commands/plugin.rb b/railties/lib/rails/commands/plugin.rb index 56413aa7b0..60653a2cee 100644 --- a/railties/lib/rails/commands/plugin.rb +++ b/railties/lib/rails/commands/plugin.rb @@ -3,7 +3,7 @@ if ARGV.first != "new" else ARGV.shift unless ARGV.delete("--no-rc") - customrc = ARGV.index{ |x| x.include?("--rc=") } + customrc = ARGV.index { |x| x.include?("--rc=") } railsrc = if customrc File.expand_path(ARGV.delete_at(customrc).gsub(/--rc=/, "")) else diff --git a/railties/lib/rails/commands/rake_proxy.rb b/railties/lib/rails/commands/rake_proxy.rb index b9e50f3e5a..f8da71831a 100644 --- a/railties/lib/rails/commands/rake_proxy.rb +++ b/railties/lib/rails/commands/rake_proxy.rb @@ -26,7 +26,7 @@ module Rails Rake::TaskManager.record_task_metadata = true Rake.application.instance_variable_set(:@name, "rails") - Rails.application.load_tasks + load_tasks @rake_tasks = Rake.application.tasks.select(&:comment) end diff --git a/railties/lib/rails/engine.rb b/railties/lib/rails/engine.rb index 363c65b186..86d66afddb 100644 --- a/railties/lib/rails/engine.rb +++ b/railties/lib/rails/engine.rb @@ -402,7 +402,7 @@ module Rails end unless mod.respond_to?(:railtie_routes_url_helpers) - define_method(:railtie_routes_url_helpers) {|include_path_helpers = true| railtie.routes.url_helpers(include_path_helpers) } + define_method(:railtie_routes_url_helpers) { |include_path_helpers = true| railtie.routes.url_helpers(include_path_helpers) } end end end @@ -590,8 +590,8 @@ module Rails initializer :add_view_paths do views = paths["app/views"].existent unless views.empty? - ActiveSupport.on_load(:action_controller){ prepend_view_path(views) if respond_to?(:prepend_view_path) } - ActiveSupport.on_load(:action_mailer){ prepend_view_path(views) } + ActiveSupport.on_load(:action_controller) { prepend_view_path(views) if respond_to?(:prepend_view_path) } + ActiveSupport.on_load(:action_mailer) { prepend_view_path(views) } end end diff --git a/railties/lib/rails/engine/commands_tasks.rb b/railties/lib/rails/engine/commands_tasks.rb index e21a7183fc..d6effdb732 100644 --- a/railties/lib/rails/engine/commands_tasks.rb +++ b/railties/lib/rails/engine/commands_tasks.rb @@ -1,118 +1,62 @@ require "rails/commands/rake_proxy" +require "rails/commands/common_commands_tasks" +require "active_support/core_ext/string/strip" module Rails class Engine class CommandsTasks # :nodoc: include Rails::RakeProxy + include Rails::CommonCommandsTasks attr_reader :argv - HELP_MESSAGE = <<-EOT -Usage: rails COMMAND [ARGS] - -The common Rails commands available for engines are: - generate Generate new code (short-cut alias: "g") - destroy Undo code generated with "generate" (short-cut alias: "d") - test Run tests (short-cut alias: "t") - -All commands can be run with -h for more information. - -If you want to run any commands that need to be run in context -of the application, like `rails server` or `rails console`, -you should do it from application's directory (typically test/dummy). - -In addition to those commands, there are: - EOT - - COMMAND_WHITELIST = %w(generate destroy version help test) - def initialize(argv) @argv = argv end - def run_command!(command) - command = parse_command(command) + private - if COMMAND_WHITELIST.include?(command) - send(command) - else - run_rake_task(command) + def commands + formatted_rake_tasks end - end - def generate - generate_or_destroy(:generate) - end + def command_whitelist + %w(generate destroy version help test) + end - def destroy - generate_or_destroy(:destroy) - end + def help_message + <<-EOT.strip_heredoc + Usage: rails COMMAND [ARGS] - def test - require_command!("test") - end + The common Rails commands available for engines are: + generate Generate new code (short-cut alias: "g") + destroy Undo code generated with "generate" (short-cut alias: "d") + test Run tests (short-cut alias: "t") - def version - argv.unshift "--version" - require_command!("application") - end + All commands can be run with -h for more information. - def help - write_help_message - write_commands(formatted_rake_tasks) - end + If you want to run any commands that need to be run in context + of the application, like `rails server` or `rails console`, + you should do it from application's directory (typically test/dummy). - private + In addition to those commands, there are: + EOT + end - def require_command!(command) - require "rails/commands/#{command}" + def require_application_and_environment! + require ENGINE_PATH end - def generate_or_destroy(command) - load_generators - require_command!(command) + def load_tasks + Rake.application.init("rails") + Rake.application.load_rakefile end def load_generators - require "rails/generators" - require ENGINE_PATH - engine = ::Rails::Engine.find(ENGINE_ROOT) Rails::Generators.namespace = engine.railtie_namespace engine.load_generators end - - def write_help_message - puts HELP_MESSAGE - end - - def write_commands(commands) - width = commands.map { |name, _| name.size }.max || 10 - commands.each { |command| printf(" %-#{width}s %s\n", *command) } - end - - def parse_command(command) - case command - when "--version", "-v" - "version" - when "--help", "-h" - "help" - else - command - end - end - - def rake_tasks - require_rake - - return @rake_tasks if defined?(@rake_tasks) - - load_generators - Rake::TaskManager.record_task_metadata = true - Rake.application.init("rails") - Rake.application.load_rakefile - @rake_tasks = Rake.application.tasks.select(&:comment) - end end end end diff --git a/railties/lib/rails/generators.rb b/railties/lib/rails/generators.rb index 708c0b11d6..6a112fc710 100644 --- a/railties/lib/rails/generators.rb +++ b/railties/lib/rails/generators.rb @@ -180,9 +180,9 @@ module Rails klass.start(args, config) else options = sorted_groups.flat_map(&:last) - suggestions = options.sort_by {|suggested| levenshtein_distance(namespace.to_s, suggested) }.first(3) + suggestions = options.sort_by { |suggested| levenshtein_distance(namespace.to_s, suggested) }.first(3) msg = "Could not find generator '#{namespace}'. " - msg << "Maybe you meant #{ suggestions.map {|s| "'#{s}'"}.to_sentence(last_word_connector: " or ", locale: :en) }\n" + msg << "Maybe you meant #{ suggestions.map { |s| "'#{s}'" }.to_sentence(last_word_connector: " or ", locale: :en) }\n" msg << "Run `rails generate --help` for more options." puts msg end diff --git a/railties/lib/rails/generators/base.rb b/railties/lib/rails/generators/base.rb index 5b4cde30c0..c0e34c20e7 100644 --- a/railties/lib/rails/generators/base.rb +++ b/railties/lib/rails/generators/base.rb @@ -168,7 +168,7 @@ module Rails names.each do |name| unless class_options.key?(name) defaults = if options[:type] == :boolean - { } + {} elsif [true, false].include?(default_value_for_option(name, options)) { banner: "" } else diff --git a/railties/lib/rails/generators/named_base.rb b/railties/lib/rails/generators/named_base.rb index 6b1e4125cb..c39ea24935 100644 --- a/railties/lib/rails/generators/named_base.rb +++ b/railties/lib/rails/generators/named_base.rb @@ -51,7 +51,7 @@ module Rails def indent(content, multiplier = 2) spaces = " " * multiplier - content.each_line.map {|line| line.blank? ? line : "#{spaces}#{line}" }.join + content.each_line.map { |line| line.blank? ? line : "#{spaces}#{line}" }.join end def wrap_with_namespace(content) @@ -162,7 +162,7 @@ module Rails end def route_url - @route_url ||= class_path.collect {|dname| "/" + dname }.join + "/" + plural_file_name + @route_url ||= class_path.collect { |dname| "/" + dname }.join + "/" + plural_file_name end def url_helper_prefix diff --git a/railties/lib/rails/generators/rails/app/app_generator.rb b/railties/lib/rails/generators/rails/app/app_generator.rb index a1b1649547..9f9c50ca10 100644 --- a/railties/lib/rails/generators/rails/app/app_generator.rb +++ b/railties/lib/rails/generators/rails/app/app_generator.rb @@ -325,6 +325,7 @@ module Rails remove_file "app/views/layouts/mailer.html.erb" remove_file "app/views/layouts/mailer.text.erb" remove_dir "app/mailers" + remove_dir "test/mailers" end end @@ -479,7 +480,7 @@ module Rails end def railsrc(argv) - if (customrc = argv.index{ |x| x.include?("--rc=") }) + if (customrc = argv.index { |x| x.include?("--rc=") }) fname = File.expand_path(argv[customrc].gsub(/--rc=/, "")) yield(argv.take(customrc) + argv.drop(customrc + 1), fname) else diff --git a/railties/lib/rails/info_controller.rb b/railties/lib/rails/info_controller.rb index f5aa074703..8b553aea79 100644 --- a/railties/lib/rails/info_controller.rb +++ b/railties/lib/rails/info_controller.rb @@ -21,8 +21,8 @@ class Rails::InfoController < Rails::ApplicationController # :nodoc: path = URI.parser.escape path normalized_path = with_leading_slash path render json: { - exact: match_route {|it| it.match normalized_path }, - fuzzy: match_route {|it| it.spec.to_s.match path } + exact: match_route { |it| it.match normalized_path }, + fuzzy: match_route { |it| it.spec.to_s.match path } } else @routes_inspector = ActionDispatch::Routing::RoutesInspector.new(_routes.routes) @@ -33,9 +33,9 @@ class Rails::InfoController < Rails::ApplicationController # :nodoc: private def match_route - _routes.routes.select {|route| + _routes.routes.select { |route| yield route.path - }.map {|route| route.path.spec.to_s } + }.map { |route| route.path.spec.to_s } end def with_leading_slash(path) diff --git a/railties/lib/rails/mailers_controller.rb b/railties/lib/rails/mailers_controller.rb index 66073899c2..95de998208 100644 --- a/railties/lib/rails/mailers_controller.rb +++ b/railties/lib/rails/mailers_controller.rb @@ -47,8 +47,8 @@ class Rails::MailersController < Rails::ApplicationController # :nodoc: def find_preview candidates = [] - params[:path].to_s.scan(%r{/|$}){ candidates << $` } - preview = candidates.detect{ |candidate| ActionMailer::Preview.exists?(candidate) } + params[:path].to_s.scan(%r{/|$}) { candidates << $` } + preview = candidates.detect { |candidate| ActionMailer::Preview.exists?(candidate) } if preview @preview = ActionMailer::Preview.find(preview) @@ -64,7 +64,7 @@ class Rails::MailersController < Rails::ApplicationController # :nodoc: end end - if formats.any?{ |f| @email.mime_type == f } + if formats.any? { |f| @email.mime_type == f } @email end end diff --git a/railties/lib/rails/tasks/routes.rake b/railties/lib/rails/tasks/routes.rake index 634b645d40..f5e5b9ae87 100644 --- a/railties/lib/rails/tasks/routes.rake +++ b/railties/lib/rails/tasks/routes.rake @@ -7,7 +7,7 @@ task routes: :environment do all_routes = Rails.application.routes.routes require "action_dispatch/routing/inspector" inspector = ActionDispatch::Routing::RoutesInspector.new(all_routes) - if ARGV.any?{ |argv| argv.start_with? "CONTROLLER" } + if ARGV.any? { |argv| argv.start_with? "CONTROLLER" } puts <<-eow.strip_heredoc Passing `CONTROLLER` to `bin/rails routes` is deprecated and will be removed in Rails 5.1. Please use `bin/rails routes -c controller_name` instead. |