railties 5.2.0 → 6.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +293 -89
- data/MIT-LICENSE +1 -1
- data/RDOC_MAIN.rdoc +39 -33
- data/README.rdoc +3 -3
- data/lib/minitest/rails_plugin.rb +24 -13
- data/lib/rails/all.rb +4 -0
- data/lib/rails/api/generator.rb +2 -1
- data/lib/rails/api/task.rb +17 -0
- data/lib/rails/app_loader.rb +2 -2
- data/lib/rails/app_updater.rb +4 -1
- data/lib/rails/application/bootstrap.rb +9 -17
- data/lib/rails/application/configuration.rb +177 -27
- data/lib/rails/application/default_middleware_stack.rb +7 -3
- data/lib/rails/application/dummy_erb_compiler.rb +18 -0
- data/lib/rails/application/finisher.rb +69 -2
- data/lib/rails/application/routes_reloader.rb +9 -19
- data/lib/rails/application.rb +96 -66
- data/lib/rails/application_controller.rb +0 -1
- data/lib/rails/autoloaders.rb +48 -0
- data/lib/rails/backtrace_cleaner.rb +14 -21
- data/lib/rails/code_statistics.rb +8 -6
- data/lib/rails/code_statistics_calculator.rb +6 -6
- data/lib/rails/command/actions.rb +10 -0
- data/lib/rails/command/base.rb +17 -5
- data/lib/rails/command/behavior.rb +8 -49
- data/lib/rails/command/environment_argument.rb +9 -16
- data/lib/rails/command/spellchecker.rb +57 -0
- data/lib/rails/command.rb +18 -11
- data/lib/rails/commands/console/console_command.rb +6 -0
- data/lib/rails/commands/credentials/USAGE +33 -0
- data/lib/rails/commands/credentials/credentials_command/diffing.rb +41 -0
- data/lib/rails/commands/credentials/credentials_command.rb +78 -21
- data/lib/rails/commands/db/system/change/change_command.rb +25 -0
- data/lib/rails/commands/dbconsole/dbconsole_command.rb +66 -51
- data/lib/rails/commands/dev/dev_command.rb +19 -0
- data/lib/rails/commands/encrypted/USAGE +28 -0
- data/lib/rails/commands/encrypted/encrypted_command.rb +5 -4
- data/lib/rails/commands/generate/generate_command.rb +1 -1
- data/lib/rails/commands/help/help_command.rb +1 -1
- data/lib/rails/commands/initializers/initializers_command.rb +23 -0
- data/lib/rails/commands/new/new_command.rb +2 -2
- data/lib/rails/commands/notes/notes_command.rb +29 -0
- data/lib/rails/commands/plugin/plugin_command.rb +1 -1
- data/lib/rails/commands/rake/rake_command.rb +9 -8
- data/lib/rails/commands/routes/routes_command.rb +37 -0
- data/lib/rails/commands/runner/runner_command.rb +13 -9
- data/lib/rails/commands/secrets/USAGE +6 -0
- data/lib/rails/commands/secrets/secrets_command.rb +3 -3
- data/lib/rails/commands/server/server_command.rb +92 -56
- data/lib/rails/commands/test/test_command.rb +2 -2
- data/lib/rails/configuration.rb +48 -19
- data/lib/rails/engine/configuration.rb +6 -2
- data/lib/rails/engine/updater.rb +1 -1
- data/lib/rails/engine.rb +63 -35
- data/lib/rails/gem_version.rb +2 -2
- data/lib/rails/generators/actions/create_migration.rb +5 -1
- data/lib/rails/generators/actions.rb +89 -56
- data/lib/rails/generators/app_base.rb +80 -108
- data/lib/rails/generators/app_name.rb +50 -0
- data/lib/rails/generators/base.rb +19 -12
- data/lib/rails/generators/database.rb +57 -0
- data/lib/rails/generators/erb/mailer/mailer_generator.rb +1 -2
- data/lib/rails/generators/erb/scaffold/scaffold_generator.rb +0 -1
- data/lib/rails/generators/erb/scaffold/templates/_form.html.erb.tt +7 -4
- data/lib/rails/generators/erb/scaffold/templates/index.html.erb.tt +1 -1
- data/lib/rails/generators/erb/scaffold/templates/show.html.erb.tt +9 -1
- data/lib/rails/generators/erb.rb +0 -1
- data/lib/rails/generators/generated_attribute.rb +50 -31
- data/lib/rails/generators/migration.rb +3 -3
- data/lib/rails/generators/model_helpers.rb +33 -2
- data/lib/rails/generators/named_base.rb +3 -7
- data/lib/rails/generators/rails/app/USAGE +2 -1
- data/lib/rails/generators/rails/app/app_generator.rb +127 -84
- data/lib/rails/generators/rails/app/templates/Gemfile.tt +18 -21
- data/lib/rails/generators/rails/app/templates/Rakefile.tt +1 -1
- data/lib/rails/generators/rails/app/templates/app/assets/config/manifest.js.tt +0 -3
- data/lib/rails/generators/rails/app/templates/app/javascript/channels/consumer.js +6 -0
- data/lib/rails/generators/rails/app/templates/app/javascript/channels/index.js +5 -0
- data/lib/rails/generators/rails/app/templates/app/javascript/packs/application.js.tt +23 -0
- data/lib/rails/generators/rails/app/templates/app/jobs/application_job.rb.tt +5 -0
- data/lib/rails/generators/rails/app/templates/app/views/layouts/application.html.erb.tt +6 -5
- data/lib/rails/generators/rails/app/templates/bin/rails.tt +5 -2
- data/lib/rails/generators/rails/app/templates/bin/rake.tt +5 -2
- data/lib/rails/generators/rails/app/templates/bin/setup.tt +9 -9
- data/lib/rails/generators/rails/app/templates/bin/spring.tt +9 -0
- data/lib/rails/generators/rails/app/templates/bin/yarn.tt +11 -3
- data/lib/rails/generators/rails/app/templates/config/application.rb.tt +16 -7
- data/lib/rails/generators/rails/app/templates/config/boot.rb.tt +2 -2
- data/lib/rails/generators/rails/app/templates/config/cable.yml.tt +1 -1
- data/lib/rails/generators/rails/app/templates/config/databases/jdbc.yml.tt +4 -5
- data/lib/rails/generators/rails/app/templates/config/databases/jdbcmysql.yml.tt +12 -11
- data/lib/rails/generators/rails/app/templates/config/databases/jdbcpostgresql.yml.tt +13 -12
- data/lib/rails/generators/rails/app/templates/config/databases/jdbcsqlite3.yml.tt +1 -1
- data/lib/rails/generators/rails/app/templates/config/databases/mysql.yml.tt +13 -12
- data/lib/rails/generators/rails/app/templates/config/databases/oracle.yml.tt +12 -11
- data/lib/rails/generators/rails/app/templates/config/databases/postgresql.yml.tt +16 -15
- data/lib/rails/generators/rails/app/templates/config/databases/sqlite3.yml.tt +1 -1
- data/lib/rails/generators/rails/app/templates/config/databases/sqlserver.yml.tt +11 -10
- data/lib/rails/generators/rails/app/templates/config/environment.rb.tt +1 -1
- data/lib/rails/generators/rails/app/templates/config/environments/development.rb.tt +22 -5
- data/lib/rails/generators/rails/app/templates/config/environments/production.rb.tt +43 -17
- data/lib/rails/generators/rails/app/templates/config/environments/test.rb.tt +26 -7
- data/lib/rails/generators/rails/app/templates/config/initializers/assets.rb.tt +1 -1
- data/lib/rails/generators/rails/app/templates/config/initializers/backtrace_silencers.rb.tt +4 -3
- data/lib/rails/generators/rails/app/templates/config/initializers/content_security_policy.rb.tt +7 -0
- data/lib/rails/generators/rails/app/templates/config/initializers/filter_parameter_logging.rb.tt +3 -1
- data/lib/rails/generators/rails/app/templates/config/initializers/new_framework_defaults_6_1.rb.tt +63 -0
- data/lib/rails/generators/rails/app/templates/config/initializers/permissions_policy.rb.tt +11 -0
- data/lib/rails/generators/rails/app/templates/config/locales/en.yml +1 -1
- data/lib/rails/generators/rails/app/templates/config/puma.rb.tt +13 -4
- data/lib/rails/generators/rails/app/templates/config/routes.rb.tt +1 -1
- data/lib/rails/generators/rails/app/templates/config/spring.rb.tt +6 -6
- data/lib/rails/generators/rails/app/templates/config.ru.tt +2 -1
- data/lib/rails/generators/rails/app/templates/db/seeds.rb.tt +1 -1
- data/lib/rails/generators/rails/app/templates/gitattributes.tt +14 -0
- data/lib/rails/generators/rails/app/templates/gitignore.tt +10 -7
- data/lib/rails/generators/rails/app/templates/package.json.tt +8 -2
- data/lib/rails/generators/rails/app/templates/public/robots.txt +1 -1
- data/lib/rails/generators/rails/app/templates/ruby-version.tt +1 -1
- data/lib/rails/generators/rails/app/templates/test/channels/application_cable/connection_test.rb.tt +11 -0
- data/lib/rails/generators/rails/app/templates/test/test_helper.rb.tt +9 -2
- data/lib/rails/generators/rails/assets/USAGE +3 -7
- data/lib/rails/generators/rails/assets/assets_generator.rb +0 -1
- data/lib/rails/generators/rails/benchmark/USAGE +19 -0
- data/lib/rails/generators/rails/benchmark/benchmark_generator.rb +29 -0
- data/lib/rails/generators/rails/benchmark/templates/benchmark.rb.tt +15 -0
- data/lib/rails/generators/rails/controller/USAGE +2 -2
- data/lib/rails/generators/rails/controller/controller_generator.rb +10 -39
- data/lib/rails/generators/rails/credentials/credentials_generator.rb +6 -7
- data/lib/rails/generators/rails/db/system/change/change_generator.rb +65 -0
- data/lib/rails/generators/rails/encrypted_file/encrypted_file_generator.rb +10 -7
- data/lib/rails/generators/rails/encryption_key_file/encryption_key_file_generator.rb +1 -0
- data/lib/rails/generators/rails/generator/USAGE +2 -2
- data/lib/rails/generators/rails/generator/generator_generator.rb +0 -1
- data/lib/rails/generators/rails/generator/templates/USAGE.tt +1 -1
- data/lib/rails/generators/rails/helper/USAGE +2 -3
- data/lib/rails/generators/rails/helper/helper_generator.rb +5 -0
- data/lib/rails/generators/rails/integration_test/USAGE +2 -2
- data/lib/rails/generators/rails/migration/USAGE +4 -4
- data/lib/rails/generators/rails/model/USAGE +15 -16
- data/lib/rails/generators/rails/plugin/plugin_generator.rb +32 -56
- data/lib/rails/generators/rails/plugin/templates/%name%.gemspec.tt +18 -18
- data/lib/rails/generators/rails/plugin/templates/Gemfile.tt +3 -10
- data/lib/rails/generators/rails/plugin/templates/Rakefile.tt +4 -18
- data/lib/rails/generators/rails/plugin/templates/app/controllers/%namespaced_name%/application_controller.rb.tt +1 -2
- data/lib/rails/generators/rails/plugin/templates/app/helpers/%namespaced_name%/application_helper.rb.tt +1 -1
- data/lib/rails/generators/rails/plugin/templates/app/jobs/%namespaced_name%/application_job.rb.tt +1 -1
- data/lib/rails/generators/rails/plugin/templates/app/mailers/%namespaced_name%/application_mailer.rb.tt +1 -1
- data/lib/rails/generators/rails/plugin/templates/app/models/%namespaced_name%/application_record.rb.tt +1 -1
- data/lib/rails/generators/rails/plugin/templates/bin/rails.tt +3 -3
- data/lib/rails/generators/rails/plugin/templates/gitignore.tt +14 -11
- data/lib/rails/generators/rails/plugin/templates/lib/%namespaced_name%/engine.rb.tt +1 -1
- data/lib/rails/generators/rails/plugin/templates/lib/%namespaced_name%/railtie.rb.tt +1 -1
- data/lib/rails/generators/rails/plugin/templates/lib/%namespaced_name%.rb.tt +1 -0
- data/lib/rails/generators/rails/plugin/templates/rails/boot.rb.tt +1 -1
- data/lib/rails/generators/rails/plugin/templates/test/%namespaced_name%_test.rb.tt +4 -4
- data/lib/rails/generators/rails/plugin/templates/test/integration/navigation_test.rb.tt +1 -1
- data/lib/rails/generators/rails/plugin/templates/test/test_helper.rb.tt +0 -4
- data/lib/rails/generators/rails/resource/USAGE +4 -4
- data/lib/rails/generators/rails/resource_route/resource_route_generator.rb +2 -27
- data/lib/rails/generators/rails/scaffold/USAGE +5 -5
- data/lib/rails/generators/rails/scaffold_controller/USAGE +2 -2
- data/lib/rails/generators/rails/scaffold_controller/scaffold_controller_generator.rb +19 -0
- data/lib/rails/generators/rails/scaffold_controller/templates/api_controller.rb.tt +2 -2
- data/lib/rails/generators/rails/scaffold_controller/templates/controller.rb.tt +2 -2
- data/lib/rails/generators/rails/system_test/USAGE +2 -2
- data/lib/rails/generators/rails/task/USAGE +3 -3
- data/lib/rails/generators/resource_helpers.rb +1 -6
- data/lib/rails/generators/test_case.rb +1 -1
- data/lib/rails/generators/test_unit/controller/controller_generator.rb +2 -0
- data/lib/rails/generators/test_unit/controller/templates/functional_test.rb.tt +3 -3
- data/lib/rails/generators/test_unit/generator/generator_generator.rb +0 -1
- data/lib/rails/generators/test_unit/generator/templates/generator_test.rb.tt +2 -2
- data/lib/rails/generators/test_unit/integration/integration_generator.rb +5 -0
- data/lib/rails/generators/test_unit/integration/templates/integration_test.rb.tt +1 -1
- data/lib/rails/generators/test_unit/job/job_generator.rb +5 -0
- data/lib/rails/generators/test_unit/job/templates/unit_test.rb.tt +1 -1
- data/lib/rails/generators/test_unit/mailer/mailer_generator.rb +1 -1
- data/lib/rails/generators/test_unit/mailer/templates/functional_test.rb.tt +1 -1
- data/lib/rails/generators/test_unit/model/templates/fixtures.yml.tt +3 -3
- data/lib/rails/generators/test_unit/model/templates/unit_test.rb.tt +1 -1
- data/lib/rails/generators/test_unit/plugin/templates/%file_name%_test.rb.tt +1 -1
- data/lib/rails/generators/test_unit/plugin/templates/test_helper.rb +2 -2
- data/lib/rails/generators/test_unit/scaffold/scaffold_generator.rb +12 -3
- data/lib/rails/generators/test_unit/scaffold/templates/api_functional_test.rb.tt +1 -1
- data/lib/rails/generators/test_unit/scaffold/templates/functional_test.rb.tt +1 -1
- data/lib/rails/generators/test_unit/scaffold/templates/system_test.rb.tt +10 -2
- data/lib/rails/generators/test_unit/system/system_generator.rb +5 -0
- data/lib/rails/generators/testing/assertions.rb +2 -2
- data/lib/rails/generators/testing/behaviour.rb +4 -2
- data/lib/rails/generators.rb +38 -24
- data/lib/rails/info.rb +4 -4
- data/lib/rails/info_controller.rb +2 -3
- data/lib/rails/mailers_controller.rb +10 -4
- data/lib/rails/paths.rb +26 -10
- data/lib/rails/rack/logger.rb +5 -6
- data/lib/rails/railtie/configurable.rb +0 -1
- data/lib/rails/railtie/configuration.rb +3 -3
- data/lib/rails/railtie.rb +33 -13
- data/lib/rails/ruby_version_check.rb +3 -3
- data/lib/rails/secrets.rb +0 -1
- data/lib/rails/source_annotation_extractor.rb +124 -117
- data/lib/rails/tasks/engine.rake +1 -4
- data/lib/rails/tasks/framework.rake +13 -3
- data/lib/rails/tasks/log.rake +0 -1
- data/lib/rails/tasks/misc.rake +1 -1
- data/lib/rails/tasks/statistics.rake +5 -1
- data/lib/rails/tasks/yarn.rake +14 -1
- data/lib/rails/tasks/zeitwerk.rake +69 -0
- data/lib/rails/tasks.rb +1 -4
- data/lib/rails/templates/rails/mailers/email.html.erb +11 -7
- data/lib/rails/templates/rails/welcome/index.html.erb +3 -3
- data/lib/rails/test_help.rb +11 -9
- data/lib/rails/test_unit/reporter.rb +3 -2
- data/lib/rails/test_unit/runner.rb +25 -8
- data/lib/rails/test_unit/testing.rake +7 -1
- data/lib/rails.rb +10 -8
- metadata +45 -39
- data/lib/rails/generators/js/assets/assets_generator.rb +0 -15
- data/lib/rails/generators/js/assets/templates/javascript.js +0 -2
- data/lib/rails/generators/rails/app/templates/app/assets/javascripts/application.js.tt +0 -22
- data/lib/rails/generators/rails/app/templates/app/assets/javascripts/cable.js.tt +0 -13
- data/lib/rails/generators/rails/app/templates/bin/bundle.tt +0 -2
- data/lib/rails/generators/rails/app/templates/bin/update.tt +0 -34
- data/lib/rails/generators/rails/app/templates/config/databases/frontbase.yml.tt +0 -50
- data/lib/rails/generators/rails/app/templates/config/databases/ibm_db.yml.tt +0 -86
- data/lib/rails/generators/rails/app/templates/config/initializers/new_framework_defaults_5_2.rb.tt +0 -35
- data/lib/rails/generators/rails/assets/templates/javascript.js +0 -2
- data/lib/rails/generators/rails/plugin/templates/rails/application.rb.tt +0 -23
- data/lib/rails/tasks/annotations.rake +0 -22
- data/lib/rails/tasks/dev.rake +0 -10
- data/lib/rails/tasks/initializers.rake +0 -8
- data/lib/rails/tasks/routes.rake +0 -31
@@ -1,12 +1,12 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require "fileutils"
|
4
|
-
require "optparse"
|
5
4
|
require "action_dispatch"
|
6
5
|
require "rails"
|
7
|
-
require "active_support/deprecation"
|
8
6
|
require "active_support/core_ext/string/filters"
|
7
|
+
require "active_support/core_ext/symbol/starts_ends_with"
|
9
8
|
require "rails/dev_caching"
|
9
|
+
require "rails/command/environment_argument"
|
10
10
|
|
11
11
|
module Rails
|
12
12
|
class Server < ::Rack::Server
|
@@ -22,19 +22,6 @@ module Rails
|
|
22
22
|
set_environment
|
23
23
|
end
|
24
24
|
|
25
|
-
def app
|
26
|
-
@app ||= begin
|
27
|
-
app = super
|
28
|
-
if app.is_a?(Class)
|
29
|
-
ActiveSupport::Deprecation.warn(<<-MSG.squish)
|
30
|
-
Using `Rails::Application` subclass to start the server is deprecated and will be removed in Rails 6.0.
|
31
|
-
Please change `run #{app}` to `run Rails.application` in config.ru.
|
32
|
-
MSG
|
33
|
-
end
|
34
|
-
app.respond_to?(:to_app) ? app.to_app : app
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
25
|
def opt_parser
|
39
26
|
Options.new
|
40
27
|
end
|
@@ -43,18 +30,22 @@ module Rails
|
|
43
30
|
ENV["RAILS_ENV"] ||= options[:environment]
|
44
31
|
end
|
45
32
|
|
46
|
-
def start
|
47
|
-
print_boot_information
|
33
|
+
def start(after_stop_callback = nil)
|
48
34
|
trap(:INT) { exit }
|
49
35
|
create_tmp_directories
|
50
36
|
setup_dev_caching
|
51
37
|
log_to_stdout if options[:log_stdout]
|
52
38
|
|
53
|
-
super
|
39
|
+
super()
|
54
40
|
ensure
|
55
|
-
|
56
|
-
|
57
|
-
|
41
|
+
after_stop_callback.call if after_stop_callback
|
42
|
+
end
|
43
|
+
|
44
|
+
def serveable? # :nodoc:
|
45
|
+
server
|
46
|
+
true
|
47
|
+
rescue LoadError, NameError
|
48
|
+
false
|
58
49
|
end
|
59
50
|
|
60
51
|
def middleware
|
@@ -65,6 +56,10 @@ module Rails
|
|
65
56
|
super.merge(@default_options)
|
66
57
|
end
|
67
58
|
|
59
|
+
def served_url
|
60
|
+
"#{options[:SSLEnable] ? 'https' : 'http'}://#{options[:Host]}:#{options[:Port]}" unless use_puma?
|
61
|
+
end
|
62
|
+
|
68
63
|
private
|
69
64
|
def setup_dev_caching
|
70
65
|
if options[:environment] == "development"
|
@@ -72,13 +67,6 @@ module Rails
|
|
72
67
|
end
|
73
68
|
end
|
74
69
|
|
75
|
-
def print_boot_information
|
76
|
-
url = "on #{options[:SSLEnable] ? 'https' : 'http'}://#{options[:Host]}:#{options[:Port]}" unless use_puma?
|
77
|
-
puts "=> Booting #{ActiveSupport::Inflector.demodulize(server)}"
|
78
|
-
puts "=> Rails #{Rails.version} application starting in #{Rails.env} #{url}"
|
79
|
-
puts "=> Run `rails server -h` for more startup options"
|
80
|
-
end
|
81
|
-
|
82
70
|
def create_tmp_directories
|
83
71
|
%w(cache pids sockets).each do |dir_to_make|
|
84
72
|
FileUtils.mkdir_p(File.join(Rails.root, "tmp", dir_to_make))
|
@@ -97,10 +85,6 @@ module Rails
|
|
97
85
|
end
|
98
86
|
end
|
99
87
|
|
100
|
-
def restart_command
|
101
|
-
"bin/rails server #{ARGV.join(' ')}"
|
102
|
-
end
|
103
|
-
|
104
88
|
def use_puma?
|
105
89
|
server.to_s == "Rack::Handler::Puma"
|
106
90
|
end
|
@@ -108,8 +92,14 @@ module Rails
|
|
108
92
|
|
109
93
|
module Command
|
110
94
|
class ServerCommand < Base # :nodoc:
|
95
|
+
include EnvironmentArgument
|
96
|
+
|
97
|
+
# Hard-coding a bunch of handlers here as we don't have a public way of
|
98
|
+
# querying them from the Rack::Handler registry.
|
99
|
+
RACK_SERVERS = %w(cgi fastcgi webrick lsws scgi thin puma unicorn falcon)
|
100
|
+
|
111
101
|
DEFAULT_PORT = 3000
|
112
|
-
|
102
|
+
DEFAULT_PIDFILE = "tmp/pids/server.pid"
|
113
103
|
|
114
104
|
class_option :port, aliases: "-p", type: :numeric,
|
115
105
|
desc: "Runs Rails on the specified port - defaults to 3000.", banner: :port
|
@@ -120,31 +110,41 @@ module Rails
|
|
120
110
|
desc: "Uses a custom rackup configuration.", banner: :file
|
121
111
|
class_option :daemon, aliases: "-d", type: :boolean, default: false,
|
122
112
|
desc: "Runs server as a Daemon."
|
123
|
-
class_option :
|
124
|
-
desc: "Specifies the
|
125
|
-
class_option :pid, aliases: "-P", type: :string,
|
126
|
-
desc: "Specifies the PID file."
|
127
|
-
class_option
|
113
|
+
class_option :using, aliases: "-u", type: :string,
|
114
|
+
desc: "Specifies the Rack server used to run the application (thin/puma/webrick).", banner: :name
|
115
|
+
class_option :pid, aliases: "-P", type: :string,
|
116
|
+
desc: "Specifies the PID file - defaults to #{DEFAULT_PIDFILE}."
|
117
|
+
class_option :dev_caching, aliases: "-C", type: :boolean, default: nil,
|
128
118
|
desc: "Specifies whether to perform caching in development."
|
129
|
-
class_option
|
130
|
-
class_option
|
119
|
+
class_option :restart, type: :boolean, default: nil, hide: true
|
120
|
+
class_option :early_hints, type: :boolean, default: nil, desc: "Enables HTTP/2 early hints."
|
121
|
+
class_option :log_to_stdout, type: :boolean, default: nil, optional: true,
|
122
|
+
desc: "Whether to log to stdout. Enabled by default in development when not daemonized."
|
131
123
|
|
132
|
-
def initialize(args
|
133
|
-
@original_options = local_options
|
124
|
+
def initialize(args, local_options, *)
|
134
125
|
super
|
135
|
-
|
136
|
-
@
|
126
|
+
|
127
|
+
@original_options = local_options - %w( --restart )
|
137
128
|
end
|
138
129
|
|
139
130
|
def perform
|
131
|
+
extract_environment_option_from_argument
|
140
132
|
set_application_directory!
|
141
133
|
prepare_restart
|
134
|
+
|
142
135
|
Rails::Server.new(server_options).tap do |server|
|
143
136
|
# Require application after server sets environment to propagate
|
144
137
|
# the --environment option.
|
145
138
|
require APP_PATH
|
146
139
|
Dir.chdir(Rails.application.root)
|
147
|
-
|
140
|
+
|
141
|
+
if server.serveable?
|
142
|
+
print_boot_information(server.server, server.served_url)
|
143
|
+
after_stop_callback = -> { say "Exiting" unless options[:daemon] }
|
144
|
+
server.start(after_stop_callback)
|
145
|
+
else
|
146
|
+
say rack_server_suggestion(options[:using])
|
147
|
+
end
|
148
148
|
end
|
149
149
|
end
|
150
150
|
|
@@ -152,8 +152,8 @@ module Rails
|
|
152
152
|
def server_options
|
153
153
|
{
|
154
154
|
user_supplied_options: user_supplied_options,
|
155
|
-
server:
|
156
|
-
log_stdout:
|
155
|
+
server: options[:using],
|
156
|
+
log_stdout: log_to_stdout?,
|
157
157
|
Port: port,
|
158
158
|
Host: host,
|
159
159
|
DoNotReverseLookup: true,
|
@@ -161,7 +161,7 @@ module Rails
|
|
161
161
|
environment: environment,
|
162
162
|
daemonize: options[:daemon],
|
163
163
|
pid: pid,
|
164
|
-
caching: options[
|
164
|
+
caching: options[:dev_caching],
|
165
165
|
restart_cmd: restart_command,
|
166
166
|
early_hints: early_hints
|
167
167
|
}
|
@@ -175,7 +175,7 @@ module Rails
|
|
175
175
|
# ["-p3001", "-C", "--binding", "127.0.0.1"] # => {"-p"=>true, "-C"=>true, "--binding"=>true}
|
176
176
|
user_flag = {}
|
177
177
|
@original_options.each do |command|
|
178
|
-
if command.
|
178
|
+
if command.start_with?("--")
|
179
179
|
option = command.split("=")[0]
|
180
180
|
user_flag[option] = true
|
181
181
|
elsif command =~ /\A(-.)/
|
@@ -194,7 +194,7 @@ module Rails
|
|
194
194
|
name = :Port
|
195
195
|
when :binding
|
196
196
|
name = :Host
|
197
|
-
when :
|
197
|
+
when :dev_caching
|
198
198
|
name = :caching
|
199
199
|
when :daemonize
|
200
200
|
name = :daemon
|
@@ -202,8 +202,9 @@ module Rails
|
|
202
202
|
user_supplied_options << name
|
203
203
|
end
|
204
204
|
end
|
205
|
-
user_supplied_options << :Host if ENV["HOST"]
|
205
|
+
user_supplied_options << :Host if ENV["HOST"] || ENV["BINDING"]
|
206
206
|
user_supplied_options << :Port if ENV["PORT"]
|
207
|
+
user_supplied_options << :pid if ENV["PIDFILE"]
|
207
208
|
user_supplied_options.uniq
|
208
209
|
end
|
209
210
|
end
|
@@ -217,7 +218,8 @@ module Rails
|
|
217
218
|
options[:binding]
|
218
219
|
else
|
219
220
|
default_host = environment == "development" ? "localhost" : "0.0.0.0"
|
220
|
-
|
221
|
+
|
222
|
+
ENV.fetch("BINDING", default_host)
|
221
223
|
end
|
222
224
|
end
|
223
225
|
|
@@ -226,23 +228,57 @@ module Rails
|
|
226
228
|
end
|
227
229
|
|
228
230
|
def restart_command
|
229
|
-
"bin/rails server #{@
|
231
|
+
"bin/rails server #{@original_options.join(" ")} --restart"
|
230
232
|
end
|
231
233
|
|
232
234
|
def early_hints
|
233
235
|
options[:early_hints]
|
234
236
|
end
|
235
237
|
|
238
|
+
def log_to_stdout?
|
239
|
+
options.fetch(:log_to_stdout) do
|
240
|
+
options[:daemon].blank? && environment == "development"
|
241
|
+
end
|
242
|
+
end
|
243
|
+
|
236
244
|
def pid
|
237
|
-
File.expand_path(options[:pid])
|
245
|
+
File.expand_path(options[:pid] || ENV.fetch("PIDFILE", DEFAULT_PIDFILE))
|
238
246
|
end
|
239
247
|
|
240
248
|
def self.banner(*)
|
241
|
-
"rails server [puma
|
249
|
+
"rails server -u [thin/puma/webrick] [options]"
|
242
250
|
end
|
243
251
|
|
244
252
|
def prepare_restart
|
245
|
-
FileUtils.rm_f(
|
253
|
+
FileUtils.rm_f(pid) if options[:restart]
|
254
|
+
end
|
255
|
+
|
256
|
+
def rack_server_suggestion(server)
|
257
|
+
if server.in?(RACK_SERVERS)
|
258
|
+
<<~MSG
|
259
|
+
Could not load server "#{server}". Maybe you need to the add it to the Gemfile?
|
260
|
+
|
261
|
+
gem "#{server}"
|
262
|
+
|
263
|
+
Run `bin/rails server --help` for more options.
|
264
|
+
MSG
|
265
|
+
else
|
266
|
+
suggestion = Rails::Command::Spellchecker.suggest(server, from: RACK_SERVERS)
|
267
|
+
suggestion_msg = "Maybe you meant #{suggestion.inspect}?" if suggestion
|
268
|
+
|
269
|
+
<<~MSG
|
270
|
+
Could not find server "#{server}". #{suggestion_msg}
|
271
|
+
Run `bin/rails server --help` for more options.
|
272
|
+
MSG
|
273
|
+
end
|
274
|
+
end
|
275
|
+
|
276
|
+
def print_boot_information(server, url)
|
277
|
+
say <<~MSG
|
278
|
+
=> Booting #{ActiveSupport::Inflector.demodulize(server)}
|
279
|
+
=> Rails #{Rails.version} application starting in #{Rails.env} #{url}
|
280
|
+
=> Run `bin/rails server --help` for more startup options
|
281
|
+
MSG
|
246
282
|
end
|
247
283
|
end
|
248
284
|
end
|
@@ -29,8 +29,8 @@ module Rails
|
|
29
29
|
def perform(*)
|
30
30
|
$LOAD_PATH << Rails::Command.root.join("test").to_s
|
31
31
|
|
32
|
-
Rails::TestUnit::Runner.parse_options(
|
33
|
-
Rails::TestUnit::Runner.run(
|
32
|
+
Rails::TestUnit::Runner.parse_options(args)
|
33
|
+
Rails::TestUnit::Runner.run(args)
|
34
34
|
end
|
35
35
|
end
|
36
36
|
end
|
data/lib/rails/configuration.rb
CHANGED
@@ -30,6 +30,15 @@ module Rails
|
|
30
30
|
#
|
31
31
|
# config.middleware.swap ActionDispatch::Flash, Magical::Unicorns
|
32
32
|
#
|
33
|
+
# Middlewares can be moved from one place to another:
|
34
|
+
#
|
35
|
+
# config.middleware.move_before ActionDispatch::Flash, Magical::Unicorns
|
36
|
+
#
|
37
|
+
# This will move the <tt>Magical::Unicorns</tt> middleware before the
|
38
|
+
# <tt>ActionDispatch::Flash</tt>. You can also move it after:
|
39
|
+
#
|
40
|
+
# config.middleware.move_after ActionDispatch::Flash, Magical::Unicorns
|
41
|
+
#
|
33
42
|
# And finally they can also be removed from the stack completely:
|
34
43
|
#
|
35
44
|
# config.middleware.delete ActionDispatch::Flash
|
@@ -41,34 +50,49 @@ module Rails
|
|
41
50
|
end
|
42
51
|
|
43
52
|
def insert_before(*args, &block)
|
44
|
-
@operations <<
|
53
|
+
@operations << -> middleware { middleware.insert_before(*args, &block) }
|
45
54
|
end
|
55
|
+
ruby2_keywords(:insert_before) if respond_to?(:ruby2_keywords, true)
|
46
56
|
|
47
57
|
alias :insert :insert_before
|
48
58
|
|
49
59
|
def insert_after(*args, &block)
|
50
|
-
@operations <<
|
60
|
+
@operations << -> middleware { middleware.insert_after(*args, &block) }
|
51
61
|
end
|
62
|
+
ruby2_keywords(:insert_after) if respond_to?(:ruby2_keywords, true)
|
52
63
|
|
53
64
|
def swap(*args, &block)
|
54
|
-
@operations <<
|
65
|
+
@operations << -> middleware { middleware.swap(*args, &block) }
|
55
66
|
end
|
67
|
+
ruby2_keywords(:swap) if respond_to?(:ruby2_keywords, true)
|
56
68
|
|
57
69
|
def use(*args, &block)
|
58
|
-
@operations <<
|
70
|
+
@operations << -> middleware { middleware.use(*args, &block) }
|
59
71
|
end
|
72
|
+
ruby2_keywords(:use) if respond_to?(:ruby2_keywords, true)
|
60
73
|
|
61
74
|
def delete(*args, &block)
|
62
|
-
@delete_operations <<
|
75
|
+
@delete_operations << -> middleware { middleware.delete(*args, &block) }
|
76
|
+
end
|
77
|
+
|
78
|
+
def move_before(*args, &block)
|
79
|
+
@delete_operations << -> middleware { middleware.move_before(*args, &block) }
|
80
|
+
end
|
81
|
+
|
82
|
+
alias :move :move_before
|
83
|
+
|
84
|
+
def move_after(*args, &block)
|
85
|
+
@delete_operations << -> middleware { middleware.move_after(*args, &block) }
|
63
86
|
end
|
64
87
|
|
65
88
|
def unshift(*args, &block)
|
66
|
-
@operations <<
|
89
|
+
@operations << -> middleware { middleware.unshift(*args, &block) }
|
67
90
|
end
|
91
|
+
ruby2_keywords(:unshift) if respond_to?(:ruby2_keywords, true)
|
68
92
|
|
69
93
|
def merge_into(other) #:nodoc:
|
70
|
-
(@operations + @delete_operations).each do |operation
|
71
|
-
|
94
|
+
(@operations + @delete_operations).each do |operation|
|
95
|
+
operation.call(other)
|
72
96
|
end
|
73
97
|
|
74
98
|
other
|
@@ -79,18 +103,12 @@ module Rails
|
|
79
103
|
end
|
80
104
|
|
81
105
|
protected
|
82
|
-
|
83
|
-
@operations
|
84
|
-
end
|
85
|
-
|
86
|
-
def delete_operations
|
87
|
-
@delete_operations
|
88
|
-
end
|
106
|
+
attr_reader :operations, :delete_operations
|
89
107
|
end
|
90
108
|
|
91
109
|
class Generators #:nodoc:
|
92
110
|
attr_accessor :aliases, :options, :templates, :fallbacks, :colorize_logging, :api_only
|
93
|
-
attr_reader :hidden_namespaces
|
111
|
+
attr_reader :hidden_namespaces, :after_generate_callbacks
|
94
112
|
|
95
113
|
def initialize
|
96
114
|
@aliases = Hash.new { |h, k| h[k] = {} }
|
@@ -100,6 +118,7 @@ module Rails
|
|
100
118
|
@colorize_logging = true
|
101
119
|
@api_only = false
|
102
120
|
@hidden_namespaces = []
|
121
|
+
@after_generate_callbacks = []
|
103
122
|
end
|
104
123
|
|
105
124
|
def initialize_copy(source)
|
@@ -113,10 +132,20 @@ module Rails
|
|
113
132
|
@hidden_namespaces << namespace
|
114
133
|
end
|
115
134
|
|
116
|
-
def
|
117
|
-
|
135
|
+
def after_generate(&block)
|
136
|
+
@after_generate_callbacks << block
|
137
|
+
end
|
118
138
|
|
119
|
-
|
139
|
+
def method_missing(method, *args)
|
140
|
+
method = method.to_s.delete_suffix("=").to_sym
|
141
|
+
|
142
|
+
if args.empty?
|
143
|
+
if method == :rails
|
144
|
+
return @options[method]
|
145
|
+
else
|
146
|
+
return @options[:rails][method]
|
147
|
+
end
|
148
|
+
end
|
120
149
|
|
121
150
|
if method == :rails || args.first.is_a?(Hash)
|
122
151
|
namespace, configuration = method, args.shift
|
@@ -6,7 +6,7 @@ module Rails
|
|
6
6
|
class Engine
|
7
7
|
class Configuration < ::Rails::Railtie::Configuration
|
8
8
|
attr_reader :root
|
9
|
-
attr_accessor :middleware
|
9
|
+
attr_accessor :middleware, :javascript_path
|
10
10
|
attr_writer :eager_load_paths, :autoload_once_paths, :autoload_paths
|
11
11
|
|
12
12
|
def initialize(root = nil)
|
@@ -14,6 +14,7 @@ module Rails
|
|
14
14
|
@root = root
|
15
15
|
@generators = app_generators.dup
|
16
16
|
@middleware = Rails::Configuration::MiddlewareStackProxy.new
|
17
|
+
@javascript_path = "javascript"
|
17
18
|
end
|
18
19
|
|
19
20
|
# Holds generators configuration:
|
@@ -38,7 +39,9 @@ module Rails
|
|
38
39
|
@paths ||= begin
|
39
40
|
paths = Rails::Paths::Root.new(@root)
|
40
41
|
|
41
|
-
paths.add "app", eager_load: true,
|
42
|
+
paths.add "app", eager_load: true,
|
43
|
+
glob: "{*,*/concerns}",
|
44
|
+
exclude: ["assets", javascript_path]
|
42
45
|
paths.add "app/assets", glob: "*"
|
43
46
|
paths.add "app/controllers", eager_load: true
|
44
47
|
paths.add "app/channels", eager_load: true, glob: "**/*_channel.rb"
|
@@ -56,6 +59,7 @@ module Rails
|
|
56
59
|
paths.add "config/initializers", glob: "**/*.rb"
|
57
60
|
paths.add "config/locales", glob: "*.{rb,yml}"
|
58
61
|
paths.add "config/routes.rb"
|
62
|
+
paths.add "config/routes", glob: "**/*.rb"
|
59
63
|
|
60
64
|
paths.add "db"
|
61
65
|
paths.add "db/migrate"
|