railties 5.2.0 → 5.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +108 -0
- data/lib/minitest/rails_plugin.rb +1 -1
- data/lib/rails/app_updater.rb +1 -0
- data/lib/rails/application/configuration.rb +1 -1
- data/lib/rails/application/finisher.rb +1 -1
- data/lib/rails/application/routes_reloader.rb +3 -19
- data/lib/rails/application.rb +18 -2
- data/lib/rails/command/actions.rb +10 -0
- data/lib/rails/command/base.rb +4 -0
- data/lib/rails/commands/credentials/credentials_command.rb +2 -2
- data/lib/rails/commands/encrypted/USAGE +28 -0
- data/lib/rails/commands/encrypted/encrypted_command.rb +1 -0
- data/lib/rails/engine.rb +21 -3
- data/lib/rails/gem_version.rb +1 -1
- data/lib/rails/generators/app_base.rb +12 -10
- data/lib/rails/generators/base.rb +4 -0
- data/lib/rails/generators/rails/app/app_generator.rb +5 -0
- data/lib/rails/generators/rails/app/templates/Gemfile.tt +2 -2
- data/lib/rails/generators/rails/app/templates/config/initializers/new_framework_defaults_5_2.rb.tt +3 -0
- data/lib/rails/generators/rails/app/templates/config/puma.rb.tt +3 -0
- data/lib/rails/generators/rails/app/templates/gitignore.tt +4 -1
- data/lib/rails/generators/rails/app/templates/ruby-version.tt +1 -1
- data/lib/rails/generators/rails/encryption_key_file/encryption_key_file_generator.rb +1 -0
- data/lib/rails/generators/rails/plugin/templates/%name%.gemspec.tt +21 -12
- data/lib/rails/generators/test_unit/scaffold/scaffold_generator.rb +5 -0
- data/lib/rails/generators/test_unit/scaffold/templates/system_test.rb.tt +10 -2
- data/lib/rails/mailers_controller.rb +2 -0
- data/lib/rails/rack/logger.rb +4 -4
- data/lib/rails/tasks/framework.rake +1 -1
- data/lib/rails/tasks/yarn.rake +6 -1
- data/lib/rails/templates/rails/mailers/email.html.erb +10 -7
- metadata +14 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d29e86115edab9c724ecc2189e576d536126a9b3cf39998b757d34f8e8814ba0
|
4
|
+
data.tar.gz: 65762e159387158b43097135022127ef0f1941d30468aec108dc3768258e4cf6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fd08ee427f2b6b305de5c3cc07d553569861687395e18364488e70e0dc6e03c59a097f657f97838f5f1cd8db4a8babd405872a5a89b2ed9e1bcb67beeaddb959
|
7
|
+
data.tar.gz: 6bc043ce2a55cb46e2b0643e8f6826fbcd7ec172684847ca1097b3c65de3bc5b65d53685908b70a05ebafba33169ef611a2f7d598e6a76675282bb1bca90949f
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,111 @@
|
|
1
|
+
## Rails 5.2.4 (November 27, 2019) ##
|
2
|
+
|
3
|
+
* Use original `bundler` environment variables during the process of generating a new rails project.
|
4
|
+
|
5
|
+
*Marco Costa*
|
6
|
+
|
7
|
+
* Allow loading seeds without ActiveJob.
|
8
|
+
|
9
|
+
Fixes #35782
|
10
|
+
|
11
|
+
*Jeremy Weathers*
|
12
|
+
|
13
|
+
* Only force `:async` ActiveJob adapter to `:inline` during seeding.
|
14
|
+
|
15
|
+
*BatedUrGonnaDie*
|
16
|
+
|
17
|
+
|
18
|
+
## Rails 5.2.3 (March 27, 2019) ##
|
19
|
+
|
20
|
+
* Seed database with inline ActiveJob job adapter.
|
21
|
+
|
22
|
+
*Gannon McGibbon*
|
23
|
+
|
24
|
+
* Fix boolean interaction in scaffold system tests.
|
25
|
+
|
26
|
+
*Gannon McGibbon*
|
27
|
+
|
28
|
+
|
29
|
+
## Rails 5.2.2.1 (March 11, 2019) ##
|
30
|
+
|
31
|
+
* Generate random development secrets
|
32
|
+
|
33
|
+
A random development secret is now generated to tmp/development_secret.txt
|
34
|
+
|
35
|
+
This avoids an issue where development mode servers were vulnerable to
|
36
|
+
remote code execution.
|
37
|
+
|
38
|
+
Fixes CVE-2019-5420
|
39
|
+
|
40
|
+
*Eileen M. Uchitelle*, *Aaron Patterson*, *John Hawthorn*
|
41
|
+
|
42
|
+
|
43
|
+
## Rails 5.2.2 (December 04, 2018) ##
|
44
|
+
|
45
|
+
* Disable content security policy for mailer previews.
|
46
|
+
|
47
|
+
*Dylan Reile*
|
48
|
+
|
49
|
+
* Log the remote IP address of clients behind a proxy.
|
50
|
+
|
51
|
+
*Atul Bhosale*
|
52
|
+
|
53
|
+
|
54
|
+
## Rails 5.2.1.1 (November 27, 2018) ##
|
55
|
+
|
56
|
+
* No changes.
|
57
|
+
|
58
|
+
|
59
|
+
## Rails 5.2.1 (August 07, 2018) ##
|
60
|
+
|
61
|
+
* Respect `NODE_ENV` when running `rails yarn:install`.
|
62
|
+
|
63
|
+
*Max Melentiev*
|
64
|
+
|
65
|
+
* Don't generate unused files in `app:update` task
|
66
|
+
|
67
|
+
Skip the assets' initializer when sprockets isn't loaded.
|
68
|
+
|
69
|
+
Skip `config/spring.rb` when spring isn't loaded.
|
70
|
+
|
71
|
+
*Tsukuru Tanimichi*
|
72
|
+
|
73
|
+
* Don't include `bootsnap` by default in apps generated under JRuby.
|
74
|
+
|
75
|
+
Fixes #32641.
|
76
|
+
|
77
|
+
*Guillermo Iguaran*
|
78
|
+
|
79
|
+
* Create the `.ruby-version` file compatible with MRI/JRuby by default.
|
80
|
+
|
81
|
+
Fixes #32639.
|
82
|
+
|
83
|
+
*Guillermo Iguaran*
|
84
|
+
|
85
|
+
* Make the master.key file read-only for the owner upon generation on
|
86
|
+
POSIX-compliant systems.
|
87
|
+
|
88
|
+
Previously:
|
89
|
+
|
90
|
+
$ ls -l config/master.key
|
91
|
+
-rw-r--r-- 1 owner group 32 Jan 1 00:00 master.key
|
92
|
+
|
93
|
+
Now:
|
94
|
+
|
95
|
+
$ ls -l config/master.key
|
96
|
+
-rw------- 1 owner group 32 Jan 1 00:00 master.key
|
97
|
+
|
98
|
+
Fixes #32604.
|
99
|
+
|
100
|
+
*Jose Luis Duran*
|
101
|
+
|
102
|
+
* Allow use of `minitest-rails` gem with Rails test runner.
|
103
|
+
|
104
|
+
Fixes #31324.
|
105
|
+
|
106
|
+
*Yuji Yaginuma*
|
107
|
+
|
108
|
+
|
1
109
|
## Rails 5.2.0 (April 09, 2018) ##
|
2
110
|
|
3
111
|
* Fix minitest rails plugin.
|
@@ -13,7 +13,7 @@ module Minitest
|
|
13
13
|
end
|
14
14
|
|
15
15
|
def self.plugin_rails_options(opts, options)
|
16
|
-
Rails::TestUnit::Runner.attach_before_load_options(opts)
|
16
|
+
::Rails::TestUnit::Runner.attach_before_load_options(opts)
|
17
17
|
|
18
18
|
opts.on("-b", "--backtrace", "Show the complete backtrace") do
|
19
19
|
options[:full_backtrace] = true
|
data/lib/rails/app_updater.rb
CHANGED
@@ -191,7 +191,7 @@ module Rails
|
|
191
191
|
"Please note that YAML must be consistently indented using spaces. Tabs are not allowed. " \
|
192
192
|
"Error: #{e.message}"
|
193
193
|
rescue => e
|
194
|
-
raise e, "Cannot load
|
194
|
+
raise e, "Cannot load database configuration:\n#{e.message}", e.backtrace
|
195
195
|
end
|
196
196
|
|
197
197
|
def colorize_logging
|
@@ -127,7 +127,7 @@ module Rails
|
|
127
127
|
initializer :set_routes_reloader_hook do |app|
|
128
128
|
reloader = routes_reloader
|
129
129
|
reloader.eager_load = app.config.eager_load
|
130
|
-
reloader.
|
130
|
+
reloader.execute
|
131
131
|
reloaders << reloader
|
132
132
|
app.reloader.to_run do
|
133
133
|
# We configure #execute rather than #execute_if_updated because if
|
@@ -7,7 +7,7 @@ module Rails
|
|
7
7
|
class RoutesReloader
|
8
8
|
attr_reader :route_sets, :paths
|
9
9
|
attr_accessor :eager_load
|
10
|
-
delegate :updated?, to: :updater
|
10
|
+
delegate :execute_if_updated, :execute, :updated?, to: :updater
|
11
11
|
|
12
12
|
def initialize
|
13
13
|
@paths = []
|
@@ -19,31 +19,15 @@ module Rails
|
|
19
19
|
clear!
|
20
20
|
load_paths
|
21
21
|
finalize!
|
22
|
+
route_sets.each(&:eager_load!) if eager_load
|
22
23
|
ensure
|
23
24
|
revert
|
24
25
|
end
|
25
26
|
|
26
|
-
def execute
|
27
|
-
ret = updater.execute
|
28
|
-
route_sets.each(&:eager_load!) if eager_load
|
29
|
-
ret
|
30
|
-
end
|
31
|
-
|
32
|
-
def execute_if_updated
|
33
|
-
if updated = updater.execute_if_updated
|
34
|
-
route_sets.each(&:eager_load!) if eager_load
|
35
|
-
end
|
36
|
-
updated
|
37
|
-
end
|
38
|
-
|
39
27
|
private
|
40
28
|
|
41
29
|
def updater
|
42
|
-
@updater ||=
|
43
|
-
updater = ActiveSupport::FileUpdateChecker.new(paths) { reload! }
|
44
|
-
updater.execute
|
45
|
-
updater
|
46
|
-
end
|
30
|
+
@updater ||= ActiveSupport::FileUpdateChecker.new(paths) { reload! }
|
47
31
|
end
|
48
32
|
|
49
33
|
def clear!
|
data/lib/rails/application.rb
CHANGED
@@ -426,8 +426,8 @@ module Rails
|
|
426
426
|
# then credentials.secret_key_base, and finally secrets.secret_key_base. For most applications,
|
427
427
|
# the correct place to store it is in the encrypted credentials file.
|
428
428
|
def secret_key_base
|
429
|
-
if Rails.env.
|
430
|
-
|
429
|
+
if Rails.env.development? || Rails.env.test?
|
430
|
+
secrets.secret_key_base ||= generate_development_secret
|
431
431
|
else
|
432
432
|
validate_secret_key_base(
|
433
433
|
ENV["SECRET_KEY_BASE"] || credentials.secret_key_base || secrets.secret_key_base
|
@@ -588,6 +588,22 @@ module Rails
|
|
588
588
|
|
589
589
|
private
|
590
590
|
|
591
|
+
def generate_development_secret
|
592
|
+
if secrets.secret_key_base.nil?
|
593
|
+
key_file = Rails.root.join("tmp/development_secret.txt")
|
594
|
+
|
595
|
+
if !File.exist?(key_file)
|
596
|
+
random_key = SecureRandom.hex(64)
|
597
|
+
FileUtils.mkdir_p(key_file.dirname)
|
598
|
+
File.binwrite(key_file, random_key)
|
599
|
+
end
|
600
|
+
|
601
|
+
secrets.secret_key_base = File.binread(key_file)
|
602
|
+
end
|
603
|
+
|
604
|
+
secrets.secret_key_base
|
605
|
+
end
|
606
|
+
|
591
607
|
def build_request(env)
|
592
608
|
req = super
|
593
609
|
env["ORIGINAL_FULLPATH"] = req.fullpath
|
@@ -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
@@ -17,7 +17,7 @@ module Rails
|
|
17
17
|
end
|
18
18
|
|
19
19
|
def edit
|
20
|
-
|
20
|
+
require_application!
|
21
21
|
|
22
22
|
ensure_editor_available(command: "bin/rails credentials:edit") || (return)
|
23
23
|
ensure_master_key_has_been_added if Rails.application.credentials.key.nil?
|
@@ -31,7 +31,7 @@ module Rails
|
|
31
31
|
end
|
32
32
|
|
33
33
|
def show
|
34
|
-
|
34
|
+
require_application!
|
35
35
|
|
36
36
|
say Rails.application.credentials.read.presence || missing_credentials_message
|
37
37
|
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
=== Storing Encrypted Files in Source Control
|
2
|
+
|
3
|
+
The Rails `encrypted` commands provide access to encrypted files or configurations.
|
4
|
+
See the `Rails.application.encrypted` documentation for using them in your app.
|
5
|
+
|
6
|
+
=== Encryption Keys
|
7
|
+
|
8
|
+
By default, Rails looks for the encryption key in `config/master.key` or
|
9
|
+
`ENV["RAILS_MASTER_KEY"]`, but that lookup can be overriden with `--key`:
|
10
|
+
|
11
|
+
rails encrypted:edit config/encrypted_file.yml.enc --key config/encrypted_file.key
|
12
|
+
|
13
|
+
Don't commit the key! Add it to your source control's ignore file. If you use
|
14
|
+
Git, Rails handles this for you.
|
15
|
+
|
16
|
+
=== Editing Files
|
17
|
+
|
18
|
+
To edit or create an encrypted file use:
|
19
|
+
|
20
|
+
rails encrypted:edit config/encrypted_file.yml.enc
|
21
|
+
|
22
|
+
This opens a temporary file in `$EDITOR` with the decrypted contents for editing.
|
23
|
+
|
24
|
+
=== Viewing Files
|
25
|
+
|
26
|
+
To print the decrypted contents of an encrypted file use:
|
27
|
+
|
28
|
+
rails encrypted:show config/encrypted_file.yml.enc
|
data/lib/rails/engine.rb
CHANGED
@@ -531,9 +531,9 @@ module Rails
|
|
531
531
|
|
532
532
|
# Defines the routes for this engine. If a block is given to
|
533
533
|
# routes, it is appended to the engine.
|
534
|
-
def routes
|
534
|
+
def routes(&block)
|
535
535
|
@routes ||= ActionDispatch::Routing::RouteSet.new_with_config(config)
|
536
|
-
@routes.append(&
|
536
|
+
@routes.append(&block) if block_given?
|
537
537
|
@routes
|
538
538
|
end
|
539
539
|
|
@@ -548,7 +548,13 @@ module Rails
|
|
548
548
|
# Blog::Engine.load_seed
|
549
549
|
def load_seed
|
550
550
|
seed_file = paths["db/seeds.rb"].existent.first
|
551
|
-
|
551
|
+
return unless seed_file
|
552
|
+
|
553
|
+
if config.try(:active_job).try!(:queue_adapter) == :async
|
554
|
+
with_inline_jobs { load(seed_file) }
|
555
|
+
else
|
556
|
+
load(seed_file)
|
557
|
+
end
|
552
558
|
end
|
553
559
|
|
554
560
|
# Add configured load paths to Ruby's load path, and remove duplicate entries.
|
@@ -658,6 +664,18 @@ module Rails
|
|
658
664
|
end
|
659
665
|
end
|
660
666
|
|
667
|
+
def with_inline_jobs
|
668
|
+
queue_adapter = config.active_job.queue_adapter
|
669
|
+
ActiveSupport.on_load(:active_job) do
|
670
|
+
self.queue_adapter = :inline
|
671
|
+
end
|
672
|
+
yield
|
673
|
+
ensure
|
674
|
+
ActiveSupport.on_load(:active_job) do
|
675
|
+
self.queue_adapter = queue_adapter
|
676
|
+
end
|
677
|
+
end
|
678
|
+
|
661
679
|
def has_migrations?
|
662
680
|
paths["db/migrate"].existent.any?
|
663
681
|
end
|
data/lib/rails/gem_version.rb
CHANGED
@@ -408,19 +408,21 @@ module Rails
|
|
408
408
|
# its own vendored Thor, which could be a different version. Running both
|
409
409
|
# things in the same process is a recipe for a night with paracetamol.
|
410
410
|
#
|
411
|
-
# We unset temporary bundler variables to load proper bundler and Gemfile.
|
412
|
-
#
|
413
411
|
# Thanks to James Tucker for the Gem tricks involved in this call.
|
414
412
|
_bundle_command = Gem.bin_path("bundler", "bundle")
|
415
413
|
|
416
414
|
require "bundler"
|
417
|
-
Bundler.
|
418
|
-
|
419
|
-
|
420
|
-
|
421
|
-
|
422
|
-
|
423
|
-
|
415
|
+
Bundler.with_original_env do
|
416
|
+
exec_bundle_command(_bundle_command, command)
|
417
|
+
end
|
418
|
+
end
|
419
|
+
|
420
|
+
def exec_bundle_command(bundle_command, command)
|
421
|
+
full_command = %Q["#{Gem.ruby}" "#{bundle_command}" #{command}]
|
422
|
+
if options[:quiet]
|
423
|
+
system(full_command, out: File::NULL)
|
424
|
+
else
|
425
|
+
system(full_command)
|
424
426
|
end
|
425
427
|
end
|
426
428
|
|
@@ -441,7 +443,7 @@ module Rails
|
|
441
443
|
end
|
442
444
|
|
443
445
|
def depend_on_bootsnap?
|
444
|
-
!options[:skip_bootsnap] && !options[:dev]
|
446
|
+
!options[:skip_bootsnap] && !options[:dev] && !defined?(JRUBY_VERSION)
|
445
447
|
end
|
446
448
|
|
447
449
|
def os_supports_listen_out_of_the_box?
|
@@ -24,6 +24,10 @@ module Rails
|
|
24
24
|
add_runtime_options!
|
25
25
|
strict_args_position!
|
26
26
|
|
27
|
+
def self.exit_on_failure? # :nodoc:
|
28
|
+
false
|
29
|
+
end
|
30
|
+
|
27
31
|
# Returns the source root for this generator using default_source_root as default.
|
28
32
|
def self.source_root(path = nil)
|
29
33
|
@_source_root = path if path
|
@@ -146,6 +146,10 @@ module Rails
|
|
146
146
|
template "config/storage.yml"
|
147
147
|
end
|
148
148
|
|
149
|
+
if options[:skip_sprockets] && !assets_config_exist
|
150
|
+
remove_file "config/initializers/assets.rb"
|
151
|
+
end
|
152
|
+
|
149
153
|
unless rack_cors_config_exist
|
150
154
|
remove_file "config/initializers/cors.rb"
|
151
155
|
end
|
@@ -228,6 +232,7 @@ module Rails
|
|
228
232
|
|
229
233
|
def tmp
|
230
234
|
empty_directory_with_keep_file "tmp"
|
235
|
+
empty_directory_with_keep_file "tmp/pids"
|
231
236
|
empty_directory "tmp/cache"
|
232
237
|
empty_directory "tmp/cache/assets"
|
233
238
|
end
|
@@ -45,6 +45,7 @@ group :development, :test do
|
|
45
45
|
gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
|
46
46
|
end
|
47
47
|
|
48
|
+
<% end -%>
|
48
49
|
group :development do
|
49
50
|
<%- unless options.api? -%>
|
50
51
|
# Access an interactive console on exception pages or by calling 'console' anywhere in the code.
|
@@ -69,13 +70,12 @@ end
|
|
69
70
|
<%- if depends_on_system_test? -%>
|
70
71
|
group :test do
|
71
72
|
# Adds support for Capybara system testing and selenium driver
|
72
|
-
gem 'capybara', '>= 2.15'
|
73
|
+
gem 'capybara', '>= 2.15'
|
73
74
|
gem 'selenium-webdriver'
|
74
75
|
# Easy installation and use of chromedriver to run system tests with Chrome
|
75
76
|
gem 'chromedriver-helper'
|
76
77
|
end
|
77
78
|
<%- end -%>
|
78
|
-
<% end -%>
|
79
79
|
|
80
80
|
# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
|
81
81
|
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
|
data/lib/rails/generators/rails/app/templates/config/initializers/new_framework_defaults_5_2.rb.tt
CHANGED
@@ -33,3 +33,6 @@
|
|
33
33
|
|
34
34
|
# Use SHA-1 instead of MD5 to generate non-sensitive digests, such as the ETag header.
|
35
35
|
# Rails.application.config.active_support.use_sha1_digests = true
|
36
|
+
|
37
|
+
# Make `form_with` generate id attributes for any generated HTML tags.
|
38
|
+
# Rails.application.config.action_view.form_with_generates_ids = true
|
@@ -15,6 +15,9 @@ port ENV.fetch("PORT") { 3000 }
|
|
15
15
|
#
|
16
16
|
environment ENV.fetch("RAILS_ENV") { "development" }
|
17
17
|
|
18
|
+
# Specifies the `pidfile` that Puma will use.
|
19
|
+
pidfile ENV.fetch("PIDFILE") { "tmp/pids/server.pid" }
|
20
|
+
|
18
21
|
# Specifies the number of `workers` to boot in clustered mode.
|
19
22
|
# Workers are forked webserver processes. If using threads and workers together
|
20
23
|
# the concurrency of the application would be max `threads` * `workers`.
|
@@ -1 +1 @@
|
|
1
|
-
<%= RUBY_VERSION -%>
|
1
|
+
<%= ENV["RBENV_VERSION"] || ENV["rvm_ruby_string"] || "#{RUBY_ENGINE}-#{defined?(JRUBY_VERSION) ? JRUBY_VERSION : RUBY_VERSION}" -%>
|
@@ -4,21 +4,30 @@ $:.push File.expand_path("lib", __dir__)
|
|
4
4
|
require "<%= namespaced_name %>/version"
|
5
5
|
|
6
6
|
# Describe your gem and declare its dependencies:
|
7
|
-
Gem::Specification.new do |
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
7
|
+
Gem::Specification.new do |spec|
|
8
|
+
spec.name = "<%= name %>"
|
9
|
+
spec.version = <%= camelized_modules %>::VERSION
|
10
|
+
spec.authors = ["<%= author %>"]
|
11
|
+
spec.email = ["<%= email %>"]
|
12
|
+
spec.homepage = "TODO"
|
13
|
+
spec.summary = "TODO: Summary of <%= camelized_modules %>."
|
14
|
+
spec.description = "TODO: Description of <%= camelized_modules %>."
|
15
|
+
spec.license = "MIT"
|
16
16
|
|
17
|
-
|
17
|
+
# Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
|
18
|
+
# to allow pushing to a single host or delete this section to allow pushing to any host.
|
19
|
+
if spec.respond_to?(:metadata)
|
20
|
+
spec.metadata["allowed_push_host"] = "TODO: Set to 'http://mygemserver.com'"
|
21
|
+
else
|
22
|
+
raise "RubyGems 2.0 or newer is required to protect against " \
|
23
|
+
"public gem pushes."
|
24
|
+
end
|
18
25
|
|
19
|
-
|
26
|
+
spec.files = Dir["{app,config,db,lib}/**/*", "MIT-LICENSE", "Rakefile", "README.md"]
|
27
|
+
|
28
|
+
<%= '# ' if options.dev? || options.edge? -%>spec.add_dependency "rails", "<%= Array(rails_version_specifier).join('", "') %>"
|
20
29
|
<% unless options[:skip_active_record] -%>
|
21
30
|
|
22
|
-
|
31
|
+
spec.add_development_dependency "<%= gem_for_database[0] %>"
|
23
32
|
<% end -%>
|
24
33
|
end
|
@@ -16,7 +16,11 @@ class <%= class_name.pluralize %>Test < ApplicationSystemTestCase
|
|
16
16
|
click_on "New <%= class_name.titleize %>"
|
17
17
|
|
18
18
|
<%- attributes_hash.each do |attr, value| -%>
|
19
|
-
|
19
|
+
<%- if boolean?(attr) -%>
|
20
|
+
check "<%= attr.humanize %>" if <%= value %>
|
21
|
+
<%- else -%>
|
22
|
+
fill_in "<%= attr.humanize %>", with: <%= value %>
|
23
|
+
<%- end -%>
|
20
24
|
<%- end -%>
|
21
25
|
click_on "Create <%= human_name %>"
|
22
26
|
|
@@ -29,7 +33,11 @@ class <%= class_name.pluralize %>Test < ApplicationSystemTestCase
|
|
29
33
|
click_on "Edit", match: :first
|
30
34
|
|
31
35
|
<%- attributes_hash.each do |attr, value| -%>
|
32
|
-
|
36
|
+
<%- if boolean?(attr) -%>
|
37
|
+
check "<%= attr.humanize %>" if <%= value %>
|
38
|
+
<%- else -%>
|
39
|
+
fill_in "<%= attr.humanize %>", with: <%= value %>
|
40
|
+
<%- end -%>
|
33
41
|
<%- end -%>
|
34
42
|
click_on "Update <%= human_name %>"
|
35
43
|
|
data/lib/rails/rack/logger.rb
CHANGED
@@ -35,9 +35,9 @@ module Rails
|
|
35
35
|
instrumenter = ActiveSupport::Notifications.instrumenter
|
36
36
|
instrumenter.start "request.action_dispatch", request: request
|
37
37
|
logger.info { started_request_message(request) }
|
38
|
-
|
39
|
-
|
40
|
-
|
38
|
+
status, headers, body = @app.call(env)
|
39
|
+
body = ::Rack::BodyProxy.new(body) { finish(request) }
|
40
|
+
[status, headers, body]
|
41
41
|
rescue Exception
|
42
42
|
finish(request)
|
43
43
|
raise
|
@@ -50,7 +50,7 @@ module Rails
|
|
50
50
|
'Started %s "%s" for %s at %s' % [
|
51
51
|
request.request_method,
|
52
52
|
request.filtered_path,
|
53
|
-
request.
|
53
|
+
request.remote_ip,
|
54
54
|
Time.now.to_default_s ]
|
55
55
|
end
|
56
56
|
|
@@ -40,7 +40,7 @@ namespace :app do
|
|
40
40
|
namespace :update do
|
41
41
|
require "rails/app_updater"
|
42
42
|
|
43
|
-
# desc "Update config
|
43
|
+
# desc "Update config files from your current rails install"
|
44
44
|
task :configs do
|
45
45
|
Rails::AppUpdater.invoke_from_app_generator :create_boot_file
|
46
46
|
Rails::AppUpdater.invoke_from_app_generator :update_config_files
|
data/lib/rails/tasks/yarn.rake
CHANGED
@@ -3,7 +3,12 @@
|
|
3
3
|
namespace :yarn do
|
4
4
|
desc "Install all JavaScript dependencies as specified via Yarn"
|
5
5
|
task :install do
|
6
|
-
|
6
|
+
# Install only production deps when for not usual envs.
|
7
|
+
valid_node_envs = %w[test development production]
|
8
|
+
node_env = ENV.fetch("NODE_ENV") do
|
9
|
+
valid_node_envs.include?(Rails.env) ? Rails.env : "production"
|
10
|
+
end
|
11
|
+
system({ "NODE_ENV" => node_env }, "./bin/yarn install --no-progress")
|
7
12
|
end
|
8
13
|
end
|
9
14
|
|
@@ -98,7 +98,7 @@
|
|
98
98
|
<dt>Format:</dt>
|
99
99
|
<% if @email.multipart? %>
|
100
100
|
<dd>
|
101
|
-
<select id="part" onchange="refreshBody();">
|
101
|
+
<select id="part" onchange="refreshBody(false);">
|
102
102
|
<option <%= request.format == Mime[:html] ? 'selected' : '' %> value="<%= part_query('text/html') %>">View as HTML email</option>
|
103
103
|
<option <%= request.format == Mime[:text] ? 'selected' : '' %> value="<%= part_query('text/plain') %>">View as plain-text email</option>
|
104
104
|
</select>
|
@@ -110,7 +110,7 @@
|
|
110
110
|
<% if I18n.available_locales.count > 1 %>
|
111
111
|
<dt>Locale:</dt>
|
112
112
|
<dd>
|
113
|
-
<select id="locale" onchange="refreshBody();">
|
113
|
+
<select id="locale" onchange="refreshBody(true);">
|
114
114
|
<% I18n.available_locales.each do |locale| %>
|
115
115
|
<option <%= I18n.locale == locale ? 'selected' : '' %> value="<%= locale_query(locale) %>"><%= locale %></option>
|
116
116
|
<% end %>
|
@@ -130,7 +130,7 @@
|
|
130
130
|
<% end %>
|
131
131
|
|
132
132
|
<script>
|
133
|
-
function refreshBody() {
|
133
|
+
function refreshBody(reload) {
|
134
134
|
var part_select = document.querySelector('select#part');
|
135
135
|
var locale_select = document.querySelector('select#locale');
|
136
136
|
var iframe = document.getElementsByName('messageBody')[0];
|
@@ -146,10 +146,13 @@
|
|
146
146
|
}
|
147
147
|
iframe.contentWindow.location = fresh_location;
|
148
148
|
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
149
|
+
var url = location.pathname.replace(/\.(txt|html)$/, '');
|
150
|
+
var format = /html/.test(part_param) ? '.html' : '.txt';
|
151
|
+
var state_to_replace = locale_param ? (url + format + '?' + locale_param) : (url + format);
|
152
|
+
|
153
|
+
if (reload) {
|
154
|
+
location.href = state_to_replace;
|
155
|
+
} else if (history.replaceState) {
|
153
156
|
window.history.replaceState({}, '', state_to_replace);
|
154
157
|
}
|
155
158
|
}
|
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: 5.2.
|
4
|
+
version: 5.2.4
|
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:
|
11
|
+
date: 2019-11-27 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: 5.2.
|
19
|
+
version: 5.2.4
|
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: 5.2.
|
26
|
+
version: 5.2.4
|
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: 5.2.
|
33
|
+
version: 5.2.4
|
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: 5.2.
|
40
|
+
version: 5.2.4
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rake
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -58,7 +58,7 @@ dependencies:
|
|
58
58
|
requirements:
|
59
59
|
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 0.
|
61
|
+
version: 0.19.0
|
62
62
|
- - "<"
|
63
63
|
- !ruby/object:Gem::Version
|
64
64
|
version: '2.0'
|
@@ -68,7 +68,7 @@ dependencies:
|
|
68
68
|
requirements:
|
69
69
|
- - ">="
|
70
70
|
- !ruby/object:Gem::Version
|
71
|
-
version: 0.
|
71
|
+
version: 0.19.0
|
72
72
|
- - "<"
|
73
73
|
- !ruby/object:Gem::Version
|
74
74
|
version: '2.0'
|
@@ -92,14 +92,14 @@ dependencies:
|
|
92
92
|
requirements:
|
93
93
|
- - '='
|
94
94
|
- !ruby/object:Gem::Version
|
95
|
-
version: 5.2.
|
95
|
+
version: 5.2.4
|
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: 5.2.
|
102
|
+
version: 5.2.4
|
103
103
|
description: 'Rails internals: application bootup, plugins, generators, and rake tasks.'
|
104
104
|
email: david@loudthinking.com
|
105
105
|
executables:
|
@@ -143,6 +143,7 @@ files:
|
|
143
143
|
- lib/rails/commands/credentials/credentials_command.rb
|
144
144
|
- lib/rails/commands/dbconsole/dbconsole_command.rb
|
145
145
|
- lib/rails/commands/destroy/destroy_command.rb
|
146
|
+
- lib/rails/commands/encrypted/USAGE
|
146
147
|
- lib/rails/commands/encrypted/encrypted_command.rb
|
147
148
|
- lib/rails/commands/generate/generate_command.rb
|
148
149
|
- lib/rails/commands/help/USAGE
|
@@ -421,8 +422,8 @@ homepage: http://rubyonrails.org
|
|
421
422
|
licenses:
|
422
423
|
- MIT
|
423
424
|
metadata:
|
424
|
-
source_code_uri: https://github.com/rails/rails/tree/v5.2.
|
425
|
-
changelog_uri: https://github.com/rails/rails/blob/v5.2.
|
425
|
+
source_code_uri: https://github.com/rails/rails/tree/v5.2.4/railties
|
426
|
+
changelog_uri: https://github.com/rails/rails/blob/v5.2.4/railties/CHANGELOG.md
|
426
427
|
post_install_message:
|
427
428
|
rdoc_options:
|
428
429
|
- "--exclude"
|
@@ -440,8 +441,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
440
441
|
- !ruby/object:Gem::Version
|
441
442
|
version: '0'
|
442
443
|
requirements: []
|
443
|
-
|
444
|
-
rubygems_version: 2.7.6
|
444
|
+
rubygems_version: 3.0.3
|
445
445
|
signing_key:
|
446
446
|
specification_version: 4
|
447
447
|
summary: Tools for creating, working with, and running Rails applications.
|