railties 6.0.0.beta1 → 6.0.0.beta2
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of railties might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CHANGELOG.md +14 -2
- data/lib/minitest/rails_plugin.rb +1 -1
- data/lib/rails.rb +5 -0
- data/lib/rails/app_loader.rb +1 -1
- data/lib/rails/application.rb +50 -2
- data/lib/rails/application/configuration.rb +17 -2
- data/lib/rails/application/finisher.rb +11 -0
- data/lib/rails/autoloaders.rb +36 -0
- data/lib/rails/command/actions.rb +10 -0
- data/lib/rails/command/base.rb +11 -3
- data/lib/rails/command/behavior.rb +3 -2
- data/lib/rails/commands/credentials/USAGE +1 -1
- data/lib/rails/commands/credentials/credentials_command.rb +2 -2
- data/lib/rails/engine.rb +20 -5
- data/lib/rails/gem_version.rb +1 -1
- data/lib/rails/generators/actions.rb +4 -2
- data/lib/rails/generators/app_base.rb +2 -2
- data/lib/rails/generators/database.rb +1 -0
- data/lib/rails/generators/migration.rb +1 -2
- data/lib/rails/generators/rails/app/templates/Gemfile.tt +1 -1
- data/lib/rails/generators/rails/app/templates/config/environments/production.rb.tt +21 -0
- data/lib/rails/generators/rails/app/templates/config/environments/test.rb.tt +0 -3
- data/lib/rails/generators/rails/app/templates/config/puma.rb.tt +1 -1
- data/lib/rails/tasks/statistics.rake +3 -0
- metadata +11 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a90a9035f3be11b2b2a4c4fa8a020b201755e135aaf581420eee30d622f9f6d7
|
4
|
+
data.tar.gz: bcbfff6e2dedab7895b46c3befe8209ff0768d67dcc2047636f79883765cef5e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e2fadeee30a37cd2b47d48fd3cce775c1351195446850888075d2b0540b9a2120fb939e24a5fc5121fe4d0a9188a7daf3c4383af9b9f111f3065a21a83b37544
|
7
|
+
data.tar.gz: 7d5aec204ddc86f793f5dffb7b91b3e95c39e078cf5dd477e8ad0652550cad52be8f3ceada7e6507d612f9a5161a91756a59e2394cf4683f51d13365e2b178ab
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,15 @@
|
|
1
|
+
## Rails 6.0.0.beta2 (February 25, 2019) ##
|
2
|
+
|
3
|
+
* Fix non-symbol access to nested hashes returned from `Rails::Application.config_for`
|
4
|
+
being broken by allowing non-symbol access with a deprecation notice.
|
5
|
+
|
6
|
+
*Ufuk Kayserilioglu*
|
7
|
+
|
8
|
+
* Fix deeply nested namespace command printing.
|
9
|
+
|
10
|
+
*Gannon McGibbon*
|
11
|
+
|
12
|
+
|
1
13
|
## Rails 6.0.0.beta1 (January 18, 2019) ##
|
2
14
|
|
3
15
|
* Remove deprecated `after_bundle` helper inside plugins templates.
|
@@ -70,7 +82,7 @@
|
|
70
82
|
|
71
83
|
In other environments `Rails.application.config.hosts` is empty and no
|
72
84
|
`Host` header checks will be done. If you want to guard against header
|
73
|
-
attacks on production, you have to manually
|
85
|
+
attacks on production, you have to manually permit the allowed hosts
|
74
86
|
with:
|
75
87
|
|
76
88
|
Rails.application.config.hosts << "product.com"
|
@@ -83,7 +95,7 @@
|
|
83
95
|
# `beta1.product.com`.
|
84
96
|
Rails.application.config.hosts << /.*\.product\.com/
|
85
97
|
|
86
|
-
A special case is supported that allows you to
|
98
|
+
A special case is supported that allows you to permit all sub-domains:
|
87
99
|
|
88
100
|
# Allow requests from subdomains like `www.product.com` and
|
89
101
|
# `beta1.product.com`.
|
data/lib/rails.rb
CHANGED
@@ -13,6 +13,7 @@ require "active_support/core_ext/object/blank"
|
|
13
13
|
|
14
14
|
require "rails/application"
|
15
15
|
require "rails/version"
|
16
|
+
require "rails/autoloaders"
|
16
17
|
|
17
18
|
require "active_support/railtie"
|
18
19
|
require "action_dispatch/railtie"
|
@@ -110,5 +111,9 @@ module Rails
|
|
110
111
|
def public_path
|
111
112
|
application && Pathname.new(application.paths["public"].first)
|
112
113
|
end
|
114
|
+
|
115
|
+
def autoloaders
|
116
|
+
Autoloaders
|
117
|
+
end
|
113
118
|
end
|
114
119
|
end
|
data/lib/rails/app_loader.rb
CHANGED
@@ -23,7 +23,7 @@ control:
|
|
23
23
|
# too that you may or may not want (like yarn)
|
24
24
|
|
25
25
|
If you already have Rails binstubs in source control, you might be
|
26
|
-
|
26
|
+
inadvertently overwriting them during deployment by using bundle install
|
27
27
|
with the --binstubs option.
|
28
28
|
|
29
29
|
If your application was created prior to Rails 4, here's how to upgrade:
|
data/lib/rails/application.rb
CHANGED
@@ -7,6 +7,7 @@ require "active_support/key_generator"
|
|
7
7
|
require "active_support/message_verifier"
|
8
8
|
require "active_support/encrypted_configuration"
|
9
9
|
require "active_support/deprecation"
|
10
|
+
require "active_support/hash_with_indifferent_access"
|
10
11
|
require "rails/engine"
|
11
12
|
require "rails/secrets"
|
12
13
|
|
@@ -230,8 +231,8 @@ module Rails
|
|
230
231
|
config = YAML.load(ERB.new(yaml.read).result) || {}
|
231
232
|
config = (config["shared"] || {}).merge(config[env] || {})
|
232
233
|
|
233
|
-
ActiveSupport::OrderedOptions.new.tap do |
|
234
|
-
|
234
|
+
ActiveSupport::OrderedOptions.new.tap do |options|
|
235
|
+
options.update(NonSymbolAccessDeprecatedHash.new(config))
|
235
236
|
end
|
236
237
|
else
|
237
238
|
raise "Could not load configuration. No such file - #{yaml}"
|
@@ -590,5 +591,52 @@ module Rails
|
|
590
591
|
def build_middleware
|
591
592
|
config.app_middleware + super
|
592
593
|
end
|
594
|
+
|
595
|
+
class NonSymbolAccessDeprecatedHash < HashWithIndifferentAccess # :nodoc:
|
596
|
+
def initialize(value = nil)
|
597
|
+
if value.is_a?(Hash)
|
598
|
+
value.each_pair { |k, v| self[k] = v }
|
599
|
+
else
|
600
|
+
super
|
601
|
+
end
|
602
|
+
end
|
603
|
+
|
604
|
+
def []=(key, value)
|
605
|
+
regular_writer(key.to_sym, convert_value(value, for: :assignment))
|
606
|
+
end
|
607
|
+
|
608
|
+
private
|
609
|
+
|
610
|
+
def convert_key(key)
|
611
|
+
unless key.kind_of?(Symbol)
|
612
|
+
ActiveSupport::Deprecation.warn(<<~MESSAGE.squish)
|
613
|
+
Accessing hashes returned from config_for by non-symbol keys
|
614
|
+
is deprecated and will be removed in Rails 6.1.
|
615
|
+
Use symbols for access instead.
|
616
|
+
MESSAGE
|
617
|
+
|
618
|
+
key = key.to_sym
|
619
|
+
end
|
620
|
+
|
621
|
+
key
|
622
|
+
end
|
623
|
+
|
624
|
+
def convert_value(value, options = {}) # :doc:
|
625
|
+
if value.is_a? Hash
|
626
|
+
if options[:for] == :to_hash
|
627
|
+
value.to_hash
|
628
|
+
else
|
629
|
+
self.class.new(value)
|
630
|
+
end
|
631
|
+
elsif value.is_a?(Array)
|
632
|
+
if options[:for] != :assignment || value.frozen?
|
633
|
+
value = value.dup
|
634
|
+
end
|
635
|
+
value.map! { |e| convert_value(e, options) }
|
636
|
+
else
|
637
|
+
value
|
638
|
+
end
|
639
|
+
end
|
640
|
+
end
|
593
641
|
end
|
594
642
|
end
|
@@ -20,7 +20,7 @@ module Rails
|
|
20
20
|
:read_encrypted_secrets, :log_level, :content_security_policy_report_only,
|
21
21
|
:content_security_policy_nonce_generator, :require_master_key, :credentials
|
22
22
|
|
23
|
-
attr_reader :encoding, :api_only, :loaded_config_version
|
23
|
+
attr_reader :encoding, :api_only, :loaded_config_version, :autoloader
|
24
24
|
|
25
25
|
def initialize(*)
|
26
26
|
super
|
@@ -30,7 +30,7 @@ module Rails
|
|
30
30
|
@filter_parameters = []
|
31
31
|
@filter_redirect = []
|
32
32
|
@helpers_paths = []
|
33
|
-
@hosts = Array(([IPAddr.new("0.0.0.0/0"), IPAddr.new("::/0"), "localhost"] if Rails.env.development?))
|
33
|
+
@hosts = Array(([IPAddr.new("0.0.0.0/0"), IPAddr.new("::/0"), ".localhost"] if Rails.env.development?))
|
34
34
|
@public_file_server = ActiveSupport::OrderedOptions.new
|
35
35
|
@public_file_server.enabled = true
|
36
36
|
@public_file_server.index_name = "index"
|
@@ -64,6 +64,7 @@ module Rails
|
|
64
64
|
@credentials = ActiveSupport::OrderedOptions.new
|
65
65
|
@credentials.content_path = default_credentials_content_path
|
66
66
|
@credentials.key_path = default_credentials_key_path
|
67
|
+
@autoloader = :classic
|
67
68
|
end
|
68
69
|
|
69
70
|
def load_defaults(target_version)
|
@@ -117,6 +118,8 @@ module Rails
|
|
117
118
|
when "6.0"
|
118
119
|
load_defaults "5.2"
|
119
120
|
|
121
|
+
self.autoloader = :zeitwerk if RUBY_ENGINE == "ruby"
|
122
|
+
|
120
123
|
if respond_to?(:action_view)
|
121
124
|
action_view.default_enforce_utf8 = false
|
122
125
|
end
|
@@ -267,6 +270,18 @@ module Rails
|
|
267
270
|
end
|
268
271
|
end
|
269
272
|
|
273
|
+
def autoloader=(autoloader)
|
274
|
+
case autoloader
|
275
|
+
when :classic
|
276
|
+
@autoloader = autoloader
|
277
|
+
when :zeitwerk
|
278
|
+
require "zeitwerk"
|
279
|
+
@autoloader = autoloader
|
280
|
+
else
|
281
|
+
raise ArgumentError, "config.autoloader may be :classic or :zeitwerk, got #{autoloader.inspect} instead"
|
282
|
+
end
|
283
|
+
end
|
284
|
+
|
270
285
|
class Custom #:nodoc:
|
271
286
|
def initialize
|
272
287
|
@configurations = Hash.new
|
@@ -21,6 +21,13 @@ module Rails
|
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
|
+
initializer :let_zeitwerk_take_over do
|
25
|
+
if config.autoloader == :zeitwerk
|
26
|
+
require "active_support/dependencies/zeitwerk_integration"
|
27
|
+
ActiveSupport::Dependencies::ZeitwerkIntegration.take_over
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
24
31
|
initializer :add_builtin_route do |app|
|
25
32
|
if Rails.env.development?
|
26
33
|
app.routes.prepend do
|
@@ -66,6 +73,10 @@ module Rails
|
|
66
73
|
initializer :eager_load! do
|
67
74
|
if config.eager_load
|
68
75
|
ActiveSupport.run_load_hooks(:before_eager_load, self)
|
76
|
+
# Checks defined?(Zeitwerk) instead of zeitwerk_enabled? because we
|
77
|
+
# want to eager load any dependency managed by Zeitwerk regardless of
|
78
|
+
# the autoloading mode of the application.
|
79
|
+
Zeitwerk::Loader.eager_load_all if defined?(Zeitwerk)
|
69
80
|
config.eager_load_namespaces.each(&:eager_load!)
|
70
81
|
end
|
71
82
|
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Rails
|
4
|
+
module Autoloaders # :nodoc:
|
5
|
+
class << self
|
6
|
+
include Enumerable
|
7
|
+
|
8
|
+
def main
|
9
|
+
if zeitwerk_enabled?
|
10
|
+
@main ||= Zeitwerk::Loader.new.tap { |loader| loader.tag = "rails.main" }
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def once
|
15
|
+
if zeitwerk_enabled?
|
16
|
+
@once ||= Zeitwerk::Loader.new.tap { |loader| loader.tag = "rails.once" }
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def each
|
21
|
+
if zeitwerk_enabled?
|
22
|
+
yield main
|
23
|
+
yield once
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def logger=(logger)
|
28
|
+
each { |loader| loader.logger = logger }
|
29
|
+
end
|
30
|
+
|
31
|
+
def zeitwerk_enabled?
|
32
|
+
Rails.configuration.autoloader == :zeitwerk
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -11,10 +11,20 @@ module Rails
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def require_application_and_environment!
|
14
|
+
require_application!
|
15
|
+
require_environment!
|
16
|
+
end
|
17
|
+
|
18
|
+
def require_application!
|
14
19
|
require ENGINE_PATH if defined?(ENGINE_PATH)
|
15
20
|
|
16
21
|
if defined?(APP_PATH)
|
17
22
|
require APP_PATH
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def require_environment!
|
27
|
+
if defined?(APP_PATH)
|
18
28
|
Rails.application.require_environment!
|
19
29
|
end
|
20
30
|
end
|
data/lib/rails/command/base.rb
CHANGED
@@ -115,7 +115,7 @@ module Rails
|
|
115
115
|
# For a Rails::Command::TestCommand placed in <tt>rails/command/test_command.rb</tt>
|
116
116
|
# would return <tt>rails/test</tt>.
|
117
117
|
def default_command_root
|
118
|
-
path = File.expand_path(
|
118
|
+
path = File.expand_path(relative_command_path, __dir__)
|
119
119
|
path if File.exist?(path)
|
120
120
|
end
|
121
121
|
|
@@ -135,12 +135,20 @@ module Rails
|
|
135
135
|
end
|
136
136
|
|
137
137
|
def command_root_namespace
|
138
|
-
(namespace.split(":") - %w(
|
138
|
+
(namespace.split(":") - %w(rails)).join(":")
|
139
|
+
end
|
140
|
+
|
141
|
+
def relative_command_path
|
142
|
+
File.join("../commands", *command_root_namespace.split(":"))
|
139
143
|
end
|
140
144
|
|
141
145
|
def namespaced_commands
|
142
146
|
commands.keys.map do |key|
|
143
|
-
|
147
|
+
if command_root_namespace.match?(/(\A|\:)#{key}\z/)
|
148
|
+
command_root_namespace
|
149
|
+
else
|
150
|
+
"#{command_root_namespace}:#{key}"
|
151
|
+
end
|
144
152
|
end
|
145
153
|
end
|
146
154
|
end
|
@@ -71,8 +71,9 @@ module Rails
|
|
71
71
|
paths = []
|
72
72
|
namespaces.each do |namespace|
|
73
73
|
pieces = namespace.split(":")
|
74
|
-
|
75
|
-
paths << pieces.
|
74
|
+
path = pieces.join("/")
|
75
|
+
paths << "#{path}/#{pieces.last}"
|
76
|
+
paths << path
|
76
77
|
end
|
77
78
|
paths.uniq!
|
78
79
|
paths
|
@@ -54,5 +54,5 @@ doesn't exist.
|
|
54
54
|
The encryption key can also be put in `ENV["RAILS_MASTER_KEY"]`, which takes
|
55
55
|
precedence over the file encryption key.
|
56
56
|
|
57
|
-
In addition to that, the default credentials lookup paths can be
|
57
|
+
In addition to that, the default credentials lookup paths can be overridden through
|
58
58
|
`config.credentials.content_path` and `config.credentials.key_path`.
|
@@ -20,7 +20,7 @@ module Rails
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def edit
|
23
|
-
|
23
|
+
require_application!
|
24
24
|
|
25
25
|
ensure_editor_available(command: "bin/rails credentials:edit") || (return)
|
26
26
|
|
@@ -37,7 +37,7 @@ module Rails
|
|
37
37
|
end
|
38
38
|
|
39
39
|
def show
|
40
|
-
|
40
|
+
require_application!
|
41
41
|
|
42
42
|
say credentials.read.presence || missing_credentials_message
|
43
43
|
end
|
data/lib/rails/engine.rb
CHANGED
@@ -472,11 +472,10 @@ module Rails
|
|
472
472
|
# Eager load the application by loading all ruby
|
473
473
|
# files inside eager_load paths.
|
474
474
|
def eager_load!
|
475
|
-
|
476
|
-
|
477
|
-
|
478
|
-
|
479
|
-
end
|
475
|
+
if Rails.autoloaders.zeitwerk_enabled?
|
476
|
+
eager_load_with_zeitwerk!
|
477
|
+
else
|
478
|
+
eager_load_with_dependencies!
|
480
479
|
end
|
481
480
|
end
|
482
481
|
|
@@ -652,6 +651,22 @@ module Rails
|
|
652
651
|
|
653
652
|
private
|
654
653
|
|
654
|
+
def eager_load_with_zeitwerk!
|
655
|
+
(config.eager_load_paths - Zeitwerk::Loader.all_dirs).each do |path|
|
656
|
+
Dir.glob("#{path}/**/*.rb").sort.each { |file| require file }
|
657
|
+
end
|
658
|
+
end
|
659
|
+
|
660
|
+
def eager_load_with_dependencies!
|
661
|
+
config.eager_load_paths.each do |load_path|
|
662
|
+
# Starts after load_path plus a slash, ends before ".rb".
|
663
|
+
relname_range = (load_path.to_s.length + 1)...-3
|
664
|
+
Dir.glob("#{load_path}/**/*.rb").sort.each do |file|
|
665
|
+
require_dependency file[relname_range]
|
666
|
+
end
|
667
|
+
end
|
668
|
+
end
|
669
|
+
|
655
670
|
def load_config_initializer(initializer) # :doc:
|
656
671
|
ActiveSupport::Notifications.instrument("load_config_initializer.railties", initializer: initializer) do
|
657
672
|
load(initializer)
|
data/lib/rails/gem_version.rb
CHANGED
@@ -222,6 +222,7 @@ module Rails
|
|
222
222
|
log :generate, what
|
223
223
|
|
224
224
|
options = args.extract_options!
|
225
|
+
options[:without_rails_env] = true
|
225
226
|
argument = args.flat_map(&:to_s).join(" ")
|
226
227
|
|
227
228
|
execute_command :rails, "generate #{what} #{argument}", options
|
@@ -284,14 +285,15 @@ module Rails
|
|
284
285
|
# based on the executor parameter provided.
|
285
286
|
def execute_command(executor, command, options = {}) # :doc:
|
286
287
|
log executor, command
|
287
|
-
env
|
288
|
+
env = options[:env] || ENV["RAILS_ENV"] || "development"
|
289
|
+
rails_env = " RAILS_ENV=#{env}" unless options[:without_rails_env]
|
288
290
|
sudo = options[:sudo] && !Gem.win_platform? ? "sudo " : ""
|
289
291
|
config = { verbose: false }
|
290
292
|
|
291
293
|
config[:capture] = options[:capture] if options[:capture]
|
292
294
|
config[:abort_on_failure] = options[:abort_on_failure] if options[:abort_on_failure]
|
293
295
|
|
294
|
-
in_root { run("#{sudo}#{extify(executor)} #{command}
|
296
|
+
in_root { run("#{sudo}#{extify(executor)} #{command}#{rails_env}", config) }
|
295
297
|
end
|
296
298
|
|
297
299
|
# Add an extension to the given name based on the platform.
|
@@ -128,7 +128,7 @@ module Rails
|
|
128
128
|
def gemfile_entries # :doc:
|
129
129
|
[rails_gemfile_entry,
|
130
130
|
database_gemfile_entry,
|
131
|
-
|
131
|
+
web_server_gemfile_entry,
|
132
132
|
assets_gemfile_entry,
|
133
133
|
webpacker_gemfile_entry,
|
134
134
|
javascript_gemfile_entry,
|
@@ -189,7 +189,7 @@ module Rails
|
|
189
189
|
"Use #{options[:database]} as the database for Active Record"
|
190
190
|
end
|
191
191
|
|
192
|
-
def
|
192
|
+
def web_server_gemfile_entry # :doc:
|
193
193
|
return [] if options[:skip_puma]
|
194
194
|
comment = "Use Puma as the app server"
|
195
195
|
GemfileEntry.new("puma", "~> 3.11", comment)
|
@@ -15,6 +15,7 @@ module Rails
|
|
15
15
|
case database
|
16
16
|
when "mysql" then ["mysql2", [">= 0.4.4"]]
|
17
17
|
when "postgresql" then ["pg", [">= 0.18", "< 2.0"]]
|
18
|
+
when "sqlite3" then ["sqlite3", ["~> 1.3", ">= 1.3.6"]]
|
18
19
|
when "oracle" then ["activerecord-oracle_enhanced-adapter", nil]
|
19
20
|
when "frontbase" then ["ruby-frontbase", nil]
|
20
21
|
when "sqlserver" then ["activerecord-sqlserver-adapter", nil]
|
@@ -63,8 +63,7 @@ module Rails
|
|
63
63
|
numbered_destination = File.join(dir, ["%migration_number%", base].join("_"))
|
64
64
|
|
65
65
|
create_migration numbered_destination, nil, config do
|
66
|
-
|
67
|
-
if match && match[:version] >= "2.2.0" # Ruby 2.6+
|
66
|
+
if ERB.instance_method(:initialize).parameters.assoc(:key) # Ruby 2.6+
|
68
67
|
ERB.new(::File.binread(source), trim_mode: "-", eoutvar: "@output_buffer").result(context)
|
69
68
|
else
|
70
69
|
ERB.new(::File.binread(source), nil, "-", "@output_buffer").result(context)
|
@@ -28,7 +28,7 @@ ruby <%= "'#{RUBY_VERSION}'" -%>
|
|
28
28
|
|
29
29
|
<% if depend_on_bootsnap? -%>
|
30
30
|
# Reduces boot times through caching; required in config/boot.rb
|
31
|
-
gem 'bootsnap', '>= 1.1
|
31
|
+
gem 'bootsnap', '>= 1.4.1', require: false
|
32
32
|
|
33
33
|
<%- end -%>
|
34
34
|
<%- if options.api? -%>
|
@@ -98,4 +98,25 @@ Rails.application.configure do
|
|
98
98
|
# Do not dump schema after migrations.
|
99
99
|
config.active_record.dump_schema_after_migration = false
|
100
100
|
<%- end -%>
|
101
|
+
|
102
|
+
# Inserts middleware to perform automatic connection switching.
|
103
|
+
# The `database_selector` hash is used to pass options to the DatabaseSelector
|
104
|
+
# middleware. The `delay` is used to determine how long to wait after a write
|
105
|
+
# to send a subsequent read to the primary.
|
106
|
+
#
|
107
|
+
# The `database_resolver` class is used by the middleware to determine which
|
108
|
+
# database is appropriate to use based on the time delay.
|
109
|
+
#
|
110
|
+
# The `database_resolver_context` class is used by the middleware to set
|
111
|
+
# timestamps for the last write to the primary. The resolver uses the context
|
112
|
+
# class timestamps to determine how long to wait before reading from the
|
113
|
+
# replica.
|
114
|
+
#
|
115
|
+
# By default Rails will store a last write timestamp in the session. The
|
116
|
+
# DatabaseSelector middleware is designed as such you can define your own
|
117
|
+
# strategy for connection switching and pass that into the middleware through
|
118
|
+
# these configuration options.
|
119
|
+
# config.active_record.database_selector = { delay: 2.seconds }
|
120
|
+
# config.active_record.database_resolver = ActiveRecord::Middleware::DatabaseSelector::Resolver
|
121
|
+
# config.active_record.database_resolver_context = ActiveRecord::Middleware::DatabaseSelector::Resolver::Session
|
101
122
|
end
|
@@ -48,7 +48,4 @@ Rails.application.configure do
|
|
48
48
|
|
49
49
|
# Raises error for missing translations.
|
50
50
|
# config.action_view.raise_on_missing_translations = true
|
51
|
-
|
52
|
-
# Prevent expensive template finalization at end of test suite runs.
|
53
|
-
config.action_view.finalize_compiled_template_methods = false
|
54
51
|
end
|
@@ -17,7 +17,7 @@ port ENV.fetch("PORT") { 3000 }
|
|
17
17
|
environment ENV.fetch("RAILS_ENV") { "development" }
|
18
18
|
|
19
19
|
# Specifies the number of `workers` to boot in clustered mode.
|
20
|
-
# Workers are forked
|
20
|
+
# Workers are forked web server processes. If using threads and workers together
|
21
21
|
# the concurrency of the application would be max `threads` * `workers`.
|
22
22
|
# Workers do not work on JRuby or Windows (both of which do not support
|
23
23
|
# processes).
|
@@ -9,6 +9,7 @@ STATS_DIRECTORIES = [
|
|
9
9
|
%w(Jobs app/jobs),
|
10
10
|
%w(Models app/models),
|
11
11
|
%w(Mailers app/mailers),
|
12
|
+
%w(Mailboxes app/mailboxes),
|
12
13
|
%w(Channels app/channels),
|
13
14
|
%w(JavaScripts app/assets/javascripts),
|
14
15
|
%w(JavaScript app/javascript),
|
@@ -18,6 +19,8 @@ STATS_DIRECTORIES = [
|
|
18
19
|
%w(Helper\ tests test/helpers),
|
19
20
|
%w(Model\ tests test/models),
|
20
21
|
%w(Mailer\ tests test/mailers),
|
22
|
+
%w(Mailbox\ tests test/mailboxes),
|
23
|
+
%w(Channel\ tests test/channels),
|
21
24
|
%w(Job\ tests test/jobs),
|
22
25
|
%w(Integration\ tests test/integration),
|
23
26
|
%w(System\ tests test/system),
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: railties
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 6.0.0.
|
4
|
+
version: 6.0.0.beta2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Heinemeier Hansson
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-02-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -16,28 +16,28 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - '='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 6.0.0.
|
19
|
+
version: 6.0.0.beta2
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - '='
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 6.0.0.
|
26
|
+
version: 6.0.0.beta2
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: actionpack
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - '='
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 6.0.0.
|
33
|
+
version: 6.0.0.beta2
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - '='
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 6.0.0.
|
40
|
+
version: 6.0.0.beta2
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rake
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -92,14 +92,14 @@ dependencies:
|
|
92
92
|
requirements:
|
93
93
|
- - '='
|
94
94
|
- !ruby/object:Gem::Version
|
95
|
-
version: 6.0.0.
|
95
|
+
version: 6.0.0.beta2
|
96
96
|
type: :development
|
97
97
|
prerelease: false
|
98
98
|
version_requirements: !ruby/object:Gem::Requirement
|
99
99
|
requirements:
|
100
100
|
- - '='
|
101
101
|
- !ruby/object:Gem::Version
|
102
|
-
version: 6.0.0.
|
102
|
+
version: 6.0.0.beta2
|
103
103
|
description: 'Rails internals: application bootup, plugins, generators, and rake tasks.'
|
104
104
|
email: david@loudthinking.com
|
105
105
|
executables:
|
@@ -126,6 +126,7 @@ files:
|
|
126
126
|
- lib/rails/application/finisher.rb
|
127
127
|
- lib/rails/application/routes_reloader.rb
|
128
128
|
- lib/rails/application_controller.rb
|
129
|
+
- lib/rails/autoloaders.rb
|
129
130
|
- lib/rails/backtrace_cleaner.rb
|
130
131
|
- lib/rails/cli.rb
|
131
132
|
- lib/rails/code_statistics.rb
|
@@ -428,8 +429,8 @@ homepage: http://rubyonrails.org
|
|
428
429
|
licenses:
|
429
430
|
- MIT
|
430
431
|
metadata:
|
431
|
-
source_code_uri: https://github.com/rails/rails/tree/v6.0.0.
|
432
|
-
changelog_uri: https://github.com/rails/rails/blob/v6.0.0.
|
432
|
+
source_code_uri: https://github.com/rails/rails/tree/v6.0.0.beta2/railties
|
433
|
+
changelog_uri: https://github.com/rails/rails/blob/v6.0.0.beta2/railties/CHANGELOG.md
|
433
434
|
post_install_message:
|
434
435
|
rdoc_options:
|
435
436
|
- "--exclude"
|