railties 5.2.0.rc1 → 5.2.0.rc2

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.
Files changed (31) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +11 -0
  3. data/README.rdoc +1 -1
  4. data/lib/minitest/rails_plugin.rb +12 -3
  5. data/lib/rails/app_updater.rb +1 -1
  6. data/lib/rails/application.rb +2 -1
  7. data/lib/rails/application/configuration.rb +46 -38
  8. data/lib/rails/application/default_middleware_stack.rb +2 -1
  9. data/lib/rails/application_controller.rb +11 -0
  10. data/lib/rails/commands/credentials/credentials_command.rb +1 -1
  11. data/lib/rails/commands/encrypted/encrypted_command.rb +2 -1
  12. data/lib/rails/gem_version.rb +1 -1
  13. data/lib/rails/generators.rb +3 -0
  14. data/lib/rails/generators/app_base.rb +1 -1
  15. data/lib/rails/generators/migration.rb +6 -1
  16. data/lib/rails/generators/rails/app/app_generator.rb +14 -4
  17. data/lib/rails/generators/rails/app/templates/Gemfile.tt +1 -1
  18. data/lib/rails/generators/rails/app/templates/app/views/layouts/application.html.erb.tt +1 -0
  19. data/lib/rails/generators/rails/app/templates/config/application.rb.tt +1 -1
  20. data/lib/rails/generators/rails/app/templates/config/initializers/content_security_policy.rb.tt +4 -1
  21. data/lib/rails/generators/rails/app/templates/config/initializers/new_framework_defaults_5_2.rb.tt +5 -0
  22. data/lib/rails/generators/rails/app/templates/config/storage.yml.tt +0 -1
  23. data/lib/rails/generators/rails/controller/controller_generator.rb +1 -0
  24. data/lib/rails/generators/rails/credentials/credentials_generator.rb +10 -4
  25. data/lib/rails/generators/rails/encrypted_file/encrypted_file_generator.rb +8 -18
  26. data/lib/rails/generators/rails/encryption_key_file/encryption_key_file_generator.rb +1 -1
  27. data/lib/rails/generators/rails/master_key/master_key_generator.rb +4 -2
  28. data/lib/rails/generators/rails/plugin/templates/app/views/layouts/%namespaced_name%/application.html.erb.tt +5 -1
  29. data/lib/rails/generators/rails/plugin/templates/bin/rails.tt +1 -1
  30. data/lib/rails/generators/rails/plugin/templates/rails/javascripts.js.tt +1 -0
  31. metadata +11 -11
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b243e4fd3c66e8a713fdebd1affc6fc463b4f789acf9a0a0396a779b4154f244
4
- data.tar.gz: 760cfb30ce563e8514edb03f527dda0765c3f42005f9ec6bbadc0c4a7b409963
3
+ metadata.gz: 44e4c3f1c366f4f50752adfed105de5f3a7898fb23c918f3075cdcd8669ca884
4
+ data.tar.gz: 41bb653c78ecbbbf6ac3da439856247886048498ef765ceba501670ab53f0b3a
5
5
  SHA512:
6
- metadata.gz: 9afaf4b62f456ea46ec9363ff0e1982a6a9b49149f83084a9e56ac68d9298501ec14ba676259a566e9aba9e892459be932c2fce64855e82de5b637efb5c325a3
7
- data.tar.gz: 66876b0be9337a67ecafe82eddc834a351405b991dea4651e2d786f64af30ed24ee05ae8780327a76a44b10c7da3ede921ba546fb75b1d9cd9d0de1f33ccbc4e
6
+ metadata.gz: a68429a879f4aa51fe3fbbb962bd2914a2ed40f0f23e083a07f2caaf9aa4f257a182b716d44809121ed0b524154b0386b05c4be46b0ae8a46372f68b58d0c286
7
+ data.tar.gz: 57dba9542934177aa400a3511f7ff6b83f250bba9f6973646e92a51d7066abb2106139efe7b0d22bc23469cbdb65e530f7fccc051303aa030d70a0f0a84864c4
@@ -1,3 +1,14 @@
1
+ ## Rails 5.2.0.rc2 (March 20, 2018) ##
2
+
3
+ * Fix minitest rails plugin.
4
+
5
+ The custom reporters are added only if needed.
6
+
7
+ This will fix conflicts with others plugins.
8
+
9
+ *Kevin Robatel*
10
+
11
+
1
12
  ## Rails 5.2.0.rc1 (January 30, 2018) ##
2
13
 
3
14
  * No changes.
@@ -17,7 +17,7 @@ The latest version of Railties can be installed with RubyGems:
17
17
 
18
18
  Source code can be downloaded as part of the Rails project on GitHub
19
19
 
20
- * https://github.com/rails/rails/tree/master/railties
20
+ * https://github.com/rails/rails/tree/5-2-stable/railties
21
21
 
22
22
  == License
23
23
 
@@ -43,10 +43,19 @@ module Minitest
43
43
  Minitest.backtrace_filter = ::Rails.backtrace_cleaner if ::Rails.respond_to?(:backtrace_cleaner)
44
44
  end
45
45
 
46
+ self.plugin_rails_replace_reporters(reporter, options)
47
+ end
48
+
49
+ def self.plugin_rails_replace_reporters(minitest_reporter, options)
50
+ return unless minitest_reporter.kind_of?(Minitest::CompositeReporter)
51
+
46
52
  # Replace progress reporter for colors.
47
- reporter.reporters.delete_if { |reporter| reporter.kind_of?(SummaryReporter) || reporter.kind_of?(ProgressReporter) }
48
- reporter << SuppressedSummaryReporter.new(options[:io], options)
49
- reporter << ::Rails::TestUnitReporter.new(options[:io], options)
53
+ if minitest_reporter.reporters.reject! { |reporter| reporter.kind_of?(SummaryReporter) } != nil
54
+ minitest_reporter << SuppressedSummaryReporter.new(options[:io], options)
55
+ end
56
+ if minitest_reporter.reporters.reject! { |reporter| reporter.kind_of?(ProgressReporter) } != nil
57
+ minitest_reporter << ::Rails::TestUnitReporter.new(options[:io], options)
58
+ end
50
59
  end
51
60
 
52
61
  # Backwardscompatibility with Rails 5.0 generated plugin test scripts
@@ -22,7 +22,7 @@ module Rails
22
22
  def generator_options
23
23
  options = { api: !!Rails.application.config.api_only, update: true }
24
24
  options[:skip_active_record] = !defined?(ActiveRecord::Railtie)
25
- options[:skip_active_storage] = !defined?(ActiveStorage::Engine) || !defined?(ActiveRecord::Railtie)
25
+ options[:skip_active_storage] = !defined?(ActiveRecord::Railtie)
26
26
  options[:skip_action_mailer] = !defined?(ActionMailer::Railtie)
27
27
  options[:skip_action_cable] = !defined?(ActionCable::Engine)
28
28
  options[:skip_sprockets] = !defined?(Sprockets::Railtie)
@@ -268,7 +268,8 @@ module Rails
268
268
  "action_dispatch.cookies_digest" => config.action_dispatch.cookies_digest,
269
269
  "action_dispatch.cookies_rotations" => config.action_dispatch.cookies_rotations,
270
270
  "action_dispatch.content_security_policy" => config.content_security_policy,
271
- "action_dispatch.content_security_policy_report_only" => config.content_security_policy_report_only
271
+ "action_dispatch.content_security_policy_report_only" => config.content_security_policy_report_only,
272
+ "action_dispatch.content_security_policy_nonce_generator" => config.content_security_policy_nonce_generator
272
273
  )
273
274
  end
274
275
  end
@@ -17,47 +17,49 @@ module Rails
17
17
  :session_options, :time_zone, :reload_classes_only_on_change,
18
18
  :beginning_of_week, :filter_redirect, :x, :enable_dependency_loading,
19
19
  :read_encrypted_secrets, :log_level, :content_security_policy_report_only,
20
- :require_master_key
20
+ :content_security_policy_nonce_generator, :require_master_key
21
21
 
22
- attr_reader :encoding, :api_only
22
+ attr_reader :encoding, :api_only, :loaded_config_version
23
23
 
24
24
  def initialize(*)
25
25
  super
26
- self.encoding = Encoding::UTF_8
27
- @allow_concurrency = nil
28
- @consider_all_requests_local = false
29
- @filter_parameters = []
30
- @filter_redirect = []
31
- @helpers_paths = []
32
- @public_file_server = ActiveSupport::OrderedOptions.new
33
- @public_file_server.enabled = true
34
- @public_file_server.index_name = "index"
35
- @force_ssl = false
36
- @ssl_options = {}
37
- @session_store = nil
38
- @time_zone = "UTC"
39
- @beginning_of_week = :monday
40
- @log_level = :debug
41
- @generators = app_generators
42
- @cache_store = [ :file_store, "#{root}/tmp/cache/" ]
43
- @railties_order = [:all]
44
- @relative_url_root = ENV["RAILS_RELATIVE_URL_ROOT"]
45
- @reload_classes_only_on_change = true
46
- @file_watcher = ActiveSupport::FileUpdateChecker
47
- @exceptions_app = nil
48
- @autoflush_log = true
49
- @log_formatter = ActiveSupport::Logger::SimpleFormatter.new
50
- @eager_load = nil
51
- @secret_token = nil
52
- @secret_key_base = nil
53
- @api_only = false
54
- @debug_exception_response_format = nil
55
- @x = Custom.new
56
- @enable_dependency_loading = false
57
- @read_encrypted_secrets = false
58
- @content_security_policy = nil
59
- @content_security_policy_report_only = false
60
- @require_master_key = false
26
+ self.encoding = Encoding::UTF_8
27
+ @allow_concurrency = nil
28
+ @consider_all_requests_local = false
29
+ @filter_parameters = []
30
+ @filter_redirect = []
31
+ @helpers_paths = []
32
+ @public_file_server = ActiveSupport::OrderedOptions.new
33
+ @public_file_server.enabled = true
34
+ @public_file_server.index_name = "index"
35
+ @force_ssl = false
36
+ @ssl_options = {}
37
+ @session_store = nil
38
+ @time_zone = "UTC"
39
+ @beginning_of_week = :monday
40
+ @log_level = :debug
41
+ @generators = app_generators
42
+ @cache_store = [ :file_store, "#{root}/tmp/cache/" ]
43
+ @railties_order = [:all]
44
+ @relative_url_root = ENV["RAILS_RELATIVE_URL_ROOT"]
45
+ @reload_classes_only_on_change = true
46
+ @file_watcher = ActiveSupport::FileUpdateChecker
47
+ @exceptions_app = nil
48
+ @autoflush_log = true
49
+ @log_formatter = ActiveSupport::Logger::SimpleFormatter.new
50
+ @eager_load = nil
51
+ @secret_token = nil
52
+ @secret_key_base = nil
53
+ @api_only = false
54
+ @debug_exception_response_format = nil
55
+ @x = Custom.new
56
+ @enable_dependency_loading = false
57
+ @read_encrypted_secrets = false
58
+ @content_security_policy = nil
59
+ @content_security_policy_report_only = false
60
+ @content_security_policy_nonce_generator = nil
61
+ @require_master_key = false
62
+ @loaded_config_version = nil
61
63
  end
62
64
 
63
65
  def load_defaults(target_version)
@@ -115,6 +117,8 @@ module Rails
115
117
  else
116
118
  raise "Unknown version #{target_version.to_s.inspect}"
117
119
  end
120
+
121
+ @loaded_config_version = target_version
118
122
  end
119
123
 
120
124
  def encoding=(value)
@@ -235,7 +239,11 @@ module Rails
235
239
  end
236
240
 
237
241
  def content_security_policy(&block)
238
- @content_security_policy ||= ActionDispatch::ContentSecurityPolicy.new(&block)
242
+ if block_given?
243
+ @content_security_policy = ActionDispatch::ContentSecurityPolicy.new(&block)
244
+ else
245
+ @content_security_policy
246
+ end
239
247
  end
240
248
 
241
249
  class Custom #:nodoc:
@@ -70,7 +70,8 @@ module Rails
70
70
  middleware.use ::Rack::Head
71
71
  middleware.use ::Rack::ConditionalGet
72
72
  middleware.use ::Rack::ETag, "no-cache"
73
- middleware.use ::Rack::TempfileReaper
73
+
74
+ middleware.use ::Rack::TempfileReaper unless config.api_only
74
75
  end
75
76
  end
76
77
 
@@ -4,6 +4,13 @@ class Rails::ApplicationController < ActionController::Base # :nodoc:
4
4
  self.view_paths = File.expand_path("templates", __dir__)
5
5
  layout "application"
6
6
 
7
+ before_action :disable_content_security_policy_nonce!
8
+
9
+ content_security_policy do |policy|
10
+ policy.script_src :unsafe_inline
11
+ policy.style_src :unsafe_inline
12
+ end
13
+
7
14
  private
8
15
 
9
16
  def require_local!
@@ -15,4 +22,8 @@ class Rails::ApplicationController < ActionController::Base # :nodoc:
15
22
  def local_request?
16
23
  Rails.application.config.consider_all_requests_local || request.local?
17
24
  end
25
+
26
+ def disable_content_security_policy_nonce!
27
+ request.content_security_policy_nonce_generator = nil
28
+ end
18
29
  end
@@ -20,7 +20,7 @@ module Rails
20
20
  require_application_and_environment!
21
21
 
22
22
  ensure_editor_available(command: "bin/rails credentials:edit") || (return)
23
- ensure_master_key_has_been_added
23
+ ensure_master_key_has_been_added if Rails.application.credentials.key.nil?
24
24
  ensure_credentials_have_been_added
25
25
 
26
26
  catch_editing_exceptions do
@@ -21,9 +21,10 @@ module Rails
21
21
 
22
22
  def edit(file_path)
23
23
  require_application_and_environment!
24
+ encrypted = Rails.application.encrypted(file_path, key_path: options[:key])
24
25
 
25
26
  ensure_editor_available(command: "bin/rails encrypted:edit") || (return)
26
- ensure_encryption_key_has_been_added(options[:key])
27
+ ensure_encryption_key_has_been_added(options[:key]) if encrypted.key.nil?
27
28
  ensure_encrypted_file_has_been_added(file_path, options[:key])
28
29
 
29
30
  catch_editing_exceptions do
@@ -10,7 +10,7 @@ module Rails
10
10
  MAJOR = 5
11
11
  MINOR = 2
12
12
  TINY = 0
13
- PRE = "rc1"
13
+ PRE = "rc2"
14
14
 
15
15
  STRING = [MAJOR, MINOR, TINY, PRE].compact.join(".")
16
16
  end
@@ -218,6 +218,9 @@ module Rails
218
218
  rails.delete("app")
219
219
  rails.delete("plugin")
220
220
  rails.delete("encrypted_secrets")
221
+ rails.delete("encrypted_file")
222
+ rails.delete("encryption_key_file")
223
+ rails.delete("master_key")
221
224
  rails.delete("credentials")
222
225
 
223
226
  hidden_namespaces.each { |n| groups.delete(n.to_s) }
@@ -275,7 +275,7 @@ module Rails
275
275
  ]
276
276
  elsif options.edge?
277
277
  [
278
- GemfileEntry.github("rails", "rails/rails")
278
+ GemfileEntry.github("rails", "rails/rails", "5-2-stable")
279
279
  ]
280
280
  else
281
281
  [GemfileEntry.version("rails",
@@ -63,7 +63,12 @@ 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
- ERB.new(::File.binread(source), nil, "-", "@output_buffer").result(context)
66
+ match = ERB.version.match(/\Aerb\.rb \[(?<version>[^ ]+) /)
67
+ if match && match[:version] >= "2.2.0" # Ruby 2.6+
68
+ ERB.new(::File.binread(source), trim_mode: "-", eoutvar: "@output_buffer").result(context)
69
+ else
70
+ ERB.new(::File.binread(source), nil, "-", "@output_buffer").result(context)
71
+ end
67
72
  end
68
73
  end
69
74
  end
@@ -130,6 +130,8 @@ module Rails
130
130
  assets_config_exist = File.exist?("config/initializers/assets.rb")
131
131
  csp_config_exist = File.exist?("config/initializers/content_security_policy.rb")
132
132
 
133
+ @config_target_version = Rails.application.config.loaded_config_version || "5.0"
134
+
133
135
  config
134
136
 
135
137
  unless cookie_serializer_config_exist
@@ -167,7 +169,7 @@ module Rails
167
169
  return if options[:pretend] || options[:dummy_app]
168
170
 
169
171
  require "rails/generators/rails/master_key/master_key_generator"
170
- master_key_generator = Rails::Generators::MasterKeyGenerator.new([], quiet: options[:quiet])
172
+ master_key_generator = Rails::Generators::MasterKeyGenerator.new([], quiet: options[:quiet], force: options[:force])
171
173
  master_key_generator.add_master_key_file_silently
172
174
  master_key_generator.ignore_master_key_file_silently
173
175
  end
@@ -233,6 +235,10 @@ module Rails
233
235
  def vendor
234
236
  empty_directory_with_keep_file "vendor"
235
237
  end
238
+
239
+ def config_target_version
240
+ defined?(@config_target_version) ? @config_target_version : Rails::VERSION::STRING.to_f
241
+ end
236
242
  end
237
243
 
238
244
  module Generators
@@ -242,7 +248,7 @@ module Rails
242
248
  RESERVED_NAMES = %w[application destroy plugin runner test]
243
249
 
244
250
  class AppGenerator < AppBase # :nodoc:
245
- WEBPACKS = %w( react vue angular elm )
251
+ WEBPACKS = %w( react vue angular elm stimulus )
246
252
 
247
253
  add_shared_options_for "application"
248
254
 
@@ -383,9 +389,13 @@ module Rails
383
389
  end
384
390
  end
385
391
 
386
- def delete_application_layout_file_if_api_option
392
+ def delete_app_views_if_api_option
387
393
  if options[:api]
388
- remove_file "app/views/layouts/application.html.erb"
394
+ if options[:skip_action_mailer]
395
+ remove_dir "app/views"
396
+ else
397
+ remove_file "app/views/layouts/application.html.erb"
398
+ end
389
399
  end
390
400
  end
391
401
 
@@ -69,7 +69,7 @@ end
69
69
  <%- if depends_on_system_test? -%>
70
70
  group :test do
71
71
  # Adds support for Capybara system testing and selenium driver
72
- gem 'capybara', '~> 2.15'
72
+ gem 'capybara', '>= 2.15', '< 4.0'
73
73
  gem 'selenium-webdriver'
74
74
  # Easy installation and use of chromedriver to run system tests with Chrome
75
75
  gem 'chromedriver-helper'
@@ -3,6 +3,7 @@
3
3
  <head>
4
4
  <title><%= camelized %></title>
5
5
  <%%= csrf_meta_tags %>
6
+ <%%= csp_meta_tag %>
6
7
 
7
8
  <%- if options[:skip_javascript] -%>
8
9
  <%%= stylesheet_link_tag 'application', media: 'all' %>
@@ -24,7 +24,7 @@ Bundler.require(*Rails.groups)
24
24
  module <%= app_const_base %>
25
25
  class Application < Rails::Application
26
26
  # Initialize configuration defaults for originally generated Rails version.
27
- config.load_defaults <%= Rails::VERSION::STRING.to_f %>
27
+ config.load_defaults <%= build(:config_target_version) %>
28
28
 
29
29
  # Settings in config/environments/* take precedence over those specified here.
30
30
  # Application configuration can go into files in config/initializers
@@ -10,12 +10,15 @@
10
10
  # policy.img_src :self, :https, :data
11
11
  # policy.object_src :none
12
12
  # policy.script_src :self, :https
13
- # policy.style_src :self, :https, :unsafe_inline
13
+ # policy.style_src :self, :https
14
14
 
15
15
  # # Specify URI for violation reports
16
16
  # # policy.report_uri "/csp-violation-report-endpoint"
17
17
  # end
18
18
 
19
+ # If you are using UJS then enable automatic nonce generation
20
+ # Rails.application.config.content_security_policy_nonce_generator = -> request { SecureRandom.base64(16) }
21
+
19
22
  # Report CSP violations to a specified URI
20
23
  # For further information see the following documentation:
21
24
  # https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy-Report-Only
@@ -11,6 +11,11 @@
11
11
  # Rails.application.config.active_record.cache_versioning = true
12
12
 
13
13
  # Use AES-256-GCM authenticated encryption for encrypted cookies.
14
+ # Also, embed cookie expiry in signed or encrypted cookies for increased security.
15
+ #
16
+ # This option is not backwards compatible with earlier Rails versions.
17
+ # It's best enabled when your entire app is migrated and stable on 5.2.
18
+ #
14
19
  # Existing cookies will be converted on read then written with the new scheme.
15
20
  # Rails.application.config.action_dispatch.use_authenticated_cookie_encryption = true
16
21
 
@@ -24,7 +24,6 @@ local:
24
24
  # Use rails credentials:edit to set the Azure Storage secret (as azure_storage:storage_access_key)
25
25
  # microsoft:
26
26
  # service: AzureStorage
27
- # path: your_azure_storage_path
28
27
  # storage_account_name: your_account_name
29
28
  # storage_access_key: <%%= Rails.application.credentials.dig(:azure_storage, :storage_access_key) %>
30
29
  # container: your_container_name
@@ -16,6 +16,7 @@ module Rails
16
16
 
17
17
  def add_routes
18
18
  return if options[:skip_routes]
19
+ return if actions.empty?
19
20
  route generate_routing_code
20
21
  end
21
22
 
@@ -2,11 +2,12 @@
2
2
 
3
3
  require "rails/generators/base"
4
4
  require "rails/generators/rails/master_key/master_key_generator"
5
+ require "active_support/core_ext/string/strip"
5
6
  require "active_support/encrypted_configuration"
6
7
 
7
8
  module Rails
8
9
  module Generators
9
- class CredentialsGenerator < Base
10
+ class CredentialsGenerator < Base # :nodoc:
10
11
  def add_credentials_file
11
12
  unless credentials.content_path.exist?
12
13
  template = credentials_template
@@ -42,9 +43,14 @@ module Rails
42
43
  end
43
44
 
44
45
  def credentials_template
45
- "# aws:\n# access_key_id: 123\n# secret_access_key: 345\n\n" +
46
- "# Used as the base secret for all MessageVerifiers in Rails, including the one protecting cookies.\n" +
47
- "secret_key_base: #{SecureRandom.hex(64)}"
46
+ <<-YAML.strip_heredoc
47
+ # aws:
48
+ # access_key_id: 123
49
+ # secret_access_key: 345
50
+
51
+ # Used as the base secret for all MessageVerifiers in Rails, including the one protecting cookies.
52
+ secret_key_base: #{SecureRandom.hex(64)}
53
+ YAML
48
54
  end
49
55
  end
50
56
  end
@@ -1,27 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "rails/generators/base"
4
+ require "active_support/core_ext/string/strip"
4
5
  require "active_support/encrypted_file"
5
6
 
6
7
  module Rails
7
8
  module Generators
8
- class EncryptedFileGenerator < Base
9
- def add_encrypted_file(file_path, key_path)
10
- unless File.exist?(file_path)
11
- say "Adding #{file_path} to store encrypted content."
12
- say ""
13
- say "The following content has been encrypted with the encryption key:"
14
- say ""
15
- say template, :on_green
16
- say ""
17
-
18
- add_encrypted_file_silently(file_path, key_path)
19
-
20
- say "You can edit encrypted file with `bin/rails encrypted:edit #{file_path}`."
21
- say ""
22
- end
23
- end
24
-
9
+ class EncryptedFileGenerator < Base # :nodoc:
25
10
  def add_encrypted_file_silently(file_path, key_path, template = encrypted_file_template)
26
11
  unless File.exist?(file_path)
27
12
  setup = { content_path: file_path, key_path: key_path, env_key: "RAILS_MASTER_KEY", raise_if_missing_key: true }
@@ -31,7 +16,12 @@ module Rails
31
16
 
32
17
  private
33
18
  def encrypted_file_template
34
- "# aws:\n# access_key_id: 123\n# secret_access_key: 345\n\n"
19
+ <<-YAML.strip_heredoc
20
+ # aws:
21
+ # access_key_id: 123
22
+ # secret_access_key: 345
23
+
24
+ YAML
35
25
  end
36
26
  end
37
27
  end
@@ -6,7 +6,7 @@ require "active_support/encrypted_file"
6
6
 
7
7
  module Rails
8
8
  module Generators
9
- class EncryptionKeyFileGenerator < Base
9
+ class EncryptionKeyFileGenerator < Base # :nodoc:
10
10
  def add_key_file(key_path)
11
11
  key_path = Pathname.new(key_path)
12
12
 
@@ -7,7 +7,7 @@ require "active_support/encrypted_file"
7
7
 
8
8
  module Rails
9
9
  module Generators
10
- class MasterKeyGenerator < Base
10
+ class MasterKeyGenerator < Base # :nodoc:
11
11
  MASTER_KEY_PATH = Pathname.new("config/master.key")
12
12
 
13
13
  def add_master_key_file
@@ -27,7 +27,9 @@ module Rails
27
27
  end
28
28
 
29
29
  def add_master_key_file_silently(key = nil)
30
- key_file_generator.add_key_file_silently(MASTER_KEY_PATH, key)
30
+ unless MASTER_KEY_PATH.exist?
31
+ key_file_generator.add_key_file_silently(MASTER_KEY_PATH, key)
32
+ end
31
33
  end
32
34
 
33
35
  def ignore_master_key_file
@@ -2,9 +2,13 @@
2
2
  <html>
3
3
  <head>
4
4
  <title><%= humanized %></title>
5
+ <%%= csrf_meta_tags %>
6
+ <%%= csp_meta_tag %>
7
+
5
8
  <%%= stylesheet_link_tag "<%= namespaced_name %>/application", media: "all" %>
9
+ <%- unless options[:skip_javascript] -%>
6
10
  <%%= javascript_include_tag "<%= namespaced_name %>/application" %>
7
- <%%= csrf_meta_tags %>
11
+ <%- end -%>
8
12
  </head>
9
13
  <body>
10
14
 
@@ -19,10 +19,10 @@ require "rails"
19
19
  require "active_model/railtie"
20
20
  require "active_job/railtie"
21
21
  <%= comment_if :skip_active_record %>require "active_record/railtie"
22
+ <%= comment_if :skip_active_storage %>require "active_storage/engine"
22
23
  require "action_controller/railtie"
23
24
  <%= comment_if :skip_action_mailer %>require "action_mailer/railtie"
24
25
  require "action_view/railtie"
25
- require "active_storage/engine"
26
26
  <%= comment_if :skip_action_cable %>require "action_cable/engine"
27
27
  <%= comment_if :skip_sprockets %>require "sprockets/railtie"
28
28
  <%= comment_if :skip_test %>require "rails/test_unit/railtie"
@@ -10,6 +10,7 @@
10
10
  // Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
11
11
  // about supported directives.
12
12
  //
13
+ //= require rails-ujs
13
14
  <% unless skip_active_storage? -%>
14
15
  //= require activestorage
15
16
  <% end -%>
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.0.rc1
4
+ version: 5.2.0.rc2
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: 2018-01-30 00:00:00.000000000 Z
11
+ date: 2018-03-20 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.0.rc1
19
+ version: 5.2.0.rc2
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.0.rc1
26
+ version: 5.2.0.rc2
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.0.rc1
33
+ version: 5.2.0.rc2
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.0.rc1
40
+ version: 5.2.0.rc2
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: 5.2.0.rc1
95
+ version: 5.2.0.rc2
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.0.rc1
102
+ version: 5.2.0.rc2
103
103
  description: 'Rails internals: application bootup, plugins, generators, and rake tasks.'
104
104
  email: david@loudthinking.com
105
105
  executables:
@@ -421,8 +421,8 @@ homepage: http://rubyonrails.org
421
421
  licenses:
422
422
  - MIT
423
423
  metadata:
424
- source_code_uri: https://github.com/rails/rails/tree/v5.2.0.rc1/railties
425
- changelog_uri: https://github.com/rails/rails/blob/v5.2.0.rc1/railties/CHANGELOG.md
424
+ source_code_uri: https://github.com/rails/rails/tree/v5.2.0.rc2/railties
425
+ changelog_uri: https://github.com/rails/rails/blob/v5.2.0.rc2/railties/CHANGELOG.md
426
426
  post_install_message:
427
427
  rdoc_options:
428
428
  - "--exclude"
@@ -441,7 +441,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
441
441
  version: 1.3.1
442
442
  requirements: []
443
443
  rubyforge_project:
444
- rubygems_version: 2.7.3
444
+ rubygems_version: 2.7.6
445
445
  signing_key:
446
446
  specification_version: 4
447
447
  summary: Tools for creating, working with, and running Rails applications.