railties 5.2.4 → 6.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (159) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +284 -130
  3. data/MIT-LICENSE +1 -1
  4. data/RDOC_MAIN.rdoc +38 -31
  5. data/README.rdoc +2 -2
  6. data/lib/minitest/rails_plugin.rb +7 -11
  7. data/lib/rails.rb +5 -0
  8. data/lib/rails/all.rb +4 -0
  9. data/lib/rails/api/generator.rb +2 -1
  10. data/lib/rails/api/task.rb +16 -0
  11. data/lib/rails/app_loader.rb +2 -2
  12. data/lib/rails/app_updater.rb +3 -1
  13. data/lib/rails/application.rb +71 -29
  14. data/lib/rails/application/bootstrap.rb +2 -10
  15. data/lib/rails/application/configuration.rb +113 -13
  16. data/lib/rails/application/default_middleware_stack.rb +3 -0
  17. data/lib/rails/application/dummy_erb_compiler.rb +18 -0
  18. data/lib/rails/application/finisher.rb +54 -0
  19. data/lib/rails/autoloaders.rb +48 -0
  20. data/lib/rails/backtrace_cleaner.rb +5 -17
  21. data/lib/rails/code_statistics.rb +3 -3
  22. data/lib/rails/command.rb +11 -10
  23. data/lib/rails/command/base.rb +12 -8
  24. data/lib/rails/command/behavior.rb +7 -48
  25. data/lib/rails/command/environment_argument.rb +8 -15
  26. data/lib/rails/command/spellchecker.rb +58 -0
  27. data/lib/rails/commands/console/console_command.rb +6 -0
  28. data/lib/rails/commands/credentials/USAGE +19 -1
  29. data/lib/rails/commands/credentials/credentials_command.rb +52 -19
  30. data/lib/rails/commands/db/system/change/change_command.rb +20 -0
  31. data/lib/rails/commands/dbconsole/dbconsole_command.rb +20 -8
  32. data/lib/rails/commands/dev/dev_command.rb +19 -0
  33. data/lib/rails/commands/encrypted/USAGE +1 -1
  34. data/lib/rails/commands/encrypted/encrypted_command.rb +2 -2
  35. data/lib/rails/commands/help/help_command.rb +1 -1
  36. data/lib/rails/commands/initializers/initializers_command.rb +23 -0
  37. data/lib/rails/commands/new/new_command.rb +2 -2
  38. data/lib/rails/commands/notes/notes_command.rb +39 -0
  39. data/lib/rails/commands/plugin/plugin_command.rb +1 -1
  40. data/lib/rails/commands/routes/routes_command.rb +37 -0
  41. data/lib/rails/commands/runner/runner_command.rb +13 -9
  42. data/lib/rails/commands/secrets/USAGE +3 -3
  43. data/lib/rails/commands/secrets/secrets_command.rb +3 -3
  44. data/lib/rails/commands/server/server_command.rb +113 -50
  45. data/lib/rails/configuration.rb +1 -7
  46. data/lib/rails/engine.rb +24 -16
  47. data/lib/rails/engine/configuration.rb +5 -2
  48. data/lib/rails/gem_version.rb +3 -3
  49. data/lib/rails/generators.rb +11 -10
  50. data/lib/rails/generators/actions.rb +52 -39
  51. data/lib/rails/generators/app_base.rb +52 -92
  52. data/lib/rails/generators/app_name.rb +50 -0
  53. data/lib/rails/generators/base.rb +0 -4
  54. data/lib/rails/generators/database.rb +58 -0
  55. data/lib/rails/generators/erb/mailer/mailer_generator.rb +1 -1
  56. data/lib/rails/generators/erb/scaffold/templates/_form.html.erb.tt +6 -3
  57. data/lib/rails/generators/erb/scaffold/templates/index.html.erb.tt +1 -1
  58. data/lib/rails/generators/erb/scaffold/templates/show.html.erb.tt +9 -1
  59. data/lib/rails/generators/generated_attribute.rb +53 -27
  60. data/lib/rails/generators/migration.rb +1 -2
  61. data/lib/rails/generators/model_helpers.rb +8 -1
  62. data/lib/rails/generators/named_base.rb +1 -5
  63. data/lib/rails/generators/rails/app/app_generator.rb +37 -72
  64. data/lib/rails/generators/rails/app/templates/Gemfile.tt +7 -10
  65. data/lib/rails/generators/rails/app/templates/app/assets/config/manifest.js.tt +0 -3
  66. data/lib/rails/generators/rails/app/templates/app/{assets/javascripts/cable.js.tt → javascript/channels/consumer.js} +2 -9
  67. data/lib/rails/generators/rails/app/templates/app/javascript/channels/index.js +5 -0
  68. data/lib/rails/generators/rails/app/templates/app/javascript/packs/application.js.tt +23 -0
  69. data/lib/rails/generators/rails/app/templates/app/jobs/application_job.rb.tt +5 -0
  70. data/lib/rails/generators/rails/app/templates/app/views/layouts/application.html.erb.tt +4 -4
  71. data/lib/rails/generators/rails/app/templates/bin/setup.tt +7 -7
  72. data/lib/rails/generators/rails/app/templates/config/application.rb.tt +2 -0
  73. data/lib/rails/generators/rails/app/templates/config/cable.yml.tt +1 -1
  74. data/lib/rails/generators/rails/app/templates/config/databases/frontbase.yml.tt +2 -2
  75. data/lib/rails/generators/rails/app/templates/config/databases/ibm_db.yml.tt +2 -2
  76. data/lib/rails/generators/rails/app/templates/config/databases/jdbc.yml.tt +2 -2
  77. data/lib/rails/generators/rails/app/templates/config/databases/jdbcmysql.yml.tt +3 -3
  78. data/lib/rails/generators/rails/app/templates/config/databases/jdbcpostgresql.yml.tt +3 -3
  79. data/lib/rails/generators/rails/app/templates/config/databases/jdbcsqlite3.yml.tt +1 -1
  80. data/lib/rails/generators/rails/app/templates/config/databases/mysql.yml.tt +4 -4
  81. data/lib/rails/generators/rails/app/templates/config/databases/oracle.yml.tt +2 -2
  82. data/lib/rails/generators/rails/app/templates/config/databases/postgresql.yml.tt +6 -6
  83. data/lib/rails/generators/rails/app/templates/config/databases/sqlite3.yml.tt +1 -1
  84. data/lib/rails/generators/rails/app/templates/config/databases/sqlserver.yml.tt +2 -2
  85. data/lib/rails/generators/rails/app/templates/config/environments/development.rb.tt +5 -2
  86. data/lib/rails/generators/rails/app/templates/config/environments/production.rb.tt +28 -12
  87. data/lib/rails/generators/rails/app/templates/config/environments/test.rb.tt +13 -7
  88. data/lib/rails/generators/rails/app/templates/config/initializers/assets.rb.tt +1 -1
  89. data/lib/rails/generators/rails/app/templates/config/initializers/content_security_policy.rb.tt +7 -0
  90. data/lib/rails/generators/rails/app/templates/config/initializers/new_framework_defaults_6_0.rb.tt +45 -0
  91. data/lib/rails/generators/rails/app/templates/config/locales/en.yml +1 -1
  92. data/lib/rails/generators/rails/app/templates/config/puma.rb.tt +4 -3
  93. data/lib/rails/generators/rails/app/templates/config/routes.rb.tt +1 -1
  94. data/lib/rails/generators/rails/app/templates/config/spring.rb.tt +6 -6
  95. data/lib/rails/generators/rails/app/templates/gitignore.tt +2 -7
  96. data/lib/rails/generators/rails/app/templates/package.json.tt +7 -1
  97. data/lib/rails/generators/rails/app/templates/public/robots.txt +1 -1
  98. data/lib/rails/generators/rails/app/templates/ruby-version.tt +1 -1
  99. data/lib/rails/generators/rails/app/templates/test/channels/application_cable/connection_test.rb.tt +11 -0
  100. data/lib/rails/generators/rails/app/templates/test/test_helper.rb.tt +7 -0
  101. data/lib/rails/generators/rails/assets/USAGE +1 -4
  102. data/lib/rails/generators/rails/assets/assets_generator.rb +0 -1
  103. data/lib/rails/generators/rails/controller/controller_generator.rb +11 -1
  104. data/lib/rails/generators/rails/credentials/credentials_generator.rb +7 -8
  105. data/lib/rails/generators/rails/db/system/change/change_generator.rb +65 -0
  106. data/lib/rails/generators/rails/encrypted_file/encrypted_file_generator.rb +4 -5
  107. data/lib/rails/generators/rails/helper/helper_generator.rb +5 -0
  108. data/lib/rails/generators/rails/plugin/plugin_generator.rb +9 -33
  109. data/lib/rails/generators/rails/plugin/templates/app/controllers/%namespaced_name%/application_controller.rb.tt +1 -1
  110. data/lib/rails/generators/rails/plugin/templates/app/helpers/%namespaced_name%/application_helper.rb.tt +1 -1
  111. data/lib/rails/generators/rails/plugin/templates/app/jobs/%namespaced_name%/application_job.rb.tt +1 -1
  112. data/lib/rails/generators/rails/plugin/templates/app/mailers/%namespaced_name%/application_mailer.rb.tt +1 -1
  113. data/lib/rails/generators/rails/plugin/templates/app/models/%namespaced_name%/application_record.rb.tt +1 -1
  114. data/lib/rails/generators/rails/plugin/templates/gitignore.tt +1 -1
  115. data/lib/rails/generators/rails/plugin/templates/lib/%namespaced_name%/engine.rb.tt +1 -1
  116. data/lib/rails/generators/rails/plugin/templates/lib/%namespaced_name%/railtie.rb.tt +1 -1
  117. data/lib/rails/generators/rails/plugin/templates/test/test_helper.rb.tt +1 -2
  118. data/lib/rails/generators/rails/scaffold_controller/scaffold_controller_generator.rb +14 -0
  119. data/lib/rails/generators/rails/scaffold_controller/templates/api_controller.rb.tt +1 -1
  120. data/lib/rails/generators/rails/scaffold_controller/templates/controller.rb.tt +1 -1
  121. data/lib/rails/generators/resource_helpers.rb +1 -6
  122. data/lib/rails/generators/test_unit/integration/integration_generator.rb +6 -0
  123. data/lib/rails/generators/test_unit/job/job_generator.rb +5 -0
  124. data/lib/rails/generators/test_unit/mailer/mailer_generator.rb +1 -1
  125. data/lib/rails/generators/test_unit/model/templates/fixtures.yml.tt +2 -2
  126. data/lib/rails/generators/test_unit/scaffold/scaffold_generator.rb +8 -3
  127. data/lib/rails/generators/test_unit/system/system_generator.rb +5 -0
  128. data/lib/rails/generators/testing/behaviour.rb +3 -0
  129. data/lib/rails/info.rb +2 -2
  130. data/lib/rails/info_controller.rb +1 -1
  131. data/lib/rails/mailers_controller.rb +7 -4
  132. data/lib/rails/paths.rb +19 -9
  133. data/lib/rails/railtie.rb +1 -1
  134. data/lib/rails/ruby_version_check.rb +3 -3
  135. data/lib/rails/secrets.rb +0 -1
  136. data/lib/rails/source_annotation_extractor.rb +138 -117
  137. data/lib/rails/tasks.rb +1 -0
  138. data/lib/rails/tasks/annotations.rake +9 -9
  139. data/lib/rails/tasks/dev.rake +5 -4
  140. data/lib/rails/tasks/framework.rake +5 -1
  141. data/lib/rails/tasks/initializers.rake +5 -4
  142. data/lib/rails/tasks/log.rake +0 -1
  143. data/lib/rails/tasks/routes.rake +4 -26
  144. data/lib/rails/tasks/statistics.rake +4 -0
  145. data/lib/rails/tasks/yarn.rake +1 -1
  146. data/lib/rails/tasks/zeitwerk.rake +66 -0
  147. data/lib/rails/templates/rails/welcome/index.html.erb +2 -2
  148. data/lib/rails/test_help.rb +11 -9
  149. data/lib/rails/test_unit/reporter.rb +1 -1
  150. data/lib/rails/test_unit/runner.rb +5 -5
  151. data/lib/rails/test_unit/testing.rake +1 -1
  152. metadata +32 -23
  153. data/lib/rails/generators/js/assets/assets_generator.rb +0 -15
  154. data/lib/rails/generators/js/assets/templates/javascript.js +0 -2
  155. data/lib/rails/generators/rails/app/templates/app/assets/javascripts/application.js.tt +0 -22
  156. data/lib/rails/generators/rails/app/templates/bin/bundle.tt +0 -2
  157. data/lib/rails/generators/rails/app/templates/bin/update.tt +0 -34
  158. data/lib/rails/generators/rails/app/templates/config/initializers/new_framework_defaults_5_2.rb.tt +0 -38
  159. data/lib/rails/generators/rails/assets/templates/javascript.js +0 -2
@@ -18,20 +18,17 @@ ruby <%= "'#{RUBY_VERSION}'" -%>
18
18
  <% end -%>
19
19
  <% end -%>
20
20
 
21
- # Use ActiveModel has_secure_password
21
+ # Use Active Model has_secure_password
22
22
  # gem 'bcrypt', '~> 3.1.7'
23
23
  <% unless skip_active_storage? -%>
24
24
 
25
- # Use ActiveStorage variant
26
- # gem 'mini_magick', '~> 4.8'
25
+ # Use Active Storage variant
26
+ # gem 'image_processing', '~> 1.2'
27
27
  <% end -%>
28
28
 
29
- # Use Capistrano for deployment
30
- # gem 'capistrano-rails', group: :development
31
-
32
29
  <% if depend_on_bootsnap? -%>
33
30
  # Reduces boot times through caching; required in config/boot.rb
34
- gem 'bootsnap', '>= 1.1.0', require: false
31
+ gem 'bootsnap', '>= 1.4.2', require: false
35
32
 
36
33
  <%- end -%>
37
34
  <%- if options.api? -%>
@@ -72,10 +69,10 @@ group :test do
72
69
  # Adds support for Capybara system testing and selenium driver
73
70
  gem 'capybara', '>= 2.15'
74
71
  gem 'selenium-webdriver'
75
- # Easy installation and use of chromedriver to run system tests with Chrome
76
- gem 'chromedriver-helper'
72
+ # Easy installation and use of web drivers to run system tests with browsers
73
+ gem 'webdrivers'
77
74
  end
78
- <%- end -%>
79
75
 
76
+ <%- end -%>
80
77
  # Windows does not include zoneinfo files, so bundle the tzinfo-data gem
81
78
  gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
@@ -1,5 +1,2 @@
1
1
  //= link_tree ../images
2
- <% unless options.skip_javascript -%>
3
- //= link_directory ../javascripts .js
4
- <% end -%>
5
2
  //= link_directory ../stylesheets .css
@@ -1,13 +1,6 @@
1
1
  // Action Cable provides the framework to deal with WebSockets in Rails.
2
2
  // You can generate new channels where WebSocket features live using the `rails generate channel` command.
3
- //
4
- //= require action_cable
5
- //= require_self
6
- //= require_tree ./channels
7
3
 
8
- (function() {
9
- this.App || (this.App = {});
4
+ import { createConsumer } from "@rails/actioncable"
10
5
 
11
- App.cable = ActionCable.createConsumer();
12
-
13
- }).call(this);
6
+ export default createConsumer()
@@ -0,0 +1,5 @@
1
+ // Load all the channels within this directory and all subdirectories.
2
+ // Channel files must be named *_channel.js.
3
+
4
+ const channels = require.context('.', true, /_channel\.js$/)
5
+ channels.keys().forEach(channels)
@@ -0,0 +1,23 @@
1
+ // This file is automatically compiled by Webpack, along with any other files
2
+ // present in this directory. You're encouraged to place your actual application logic in
3
+ // a relevant structure within app/javascript and only use these pack files to reference
4
+ // that code so it'll be compiled.
5
+
6
+ require("@rails/ujs").start()
7
+ <%- unless options[:skip_turbolinks] -%>
8
+ require("turbolinks").start()
9
+ <%- end -%>
10
+ <%- unless skip_active_storage? -%>
11
+ require("@rails/activestorage").start()
12
+ <%- end -%>
13
+ <%- unless options[:skip_action_cable] -%>
14
+ require("channels")
15
+ <%- end -%>
16
+
17
+
18
+ // Uncomment to copy all static images under ../images to the output folder and reference
19
+ // them with the image_pack_tag helper in views (e.g <%%= image_pack_tag 'rails.png' %>)
20
+ // or the `imagePath` JavaScript helper below.
21
+ //
22
+ // const images = require.context('../images', true)
23
+ // const imagePath = (name) => images(name, true)
@@ -1,2 +1,7 @@
1
1
  class ApplicationJob < ActiveJob::Base
2
+ # Automatically retry jobs that encountered a deadlock
3
+ # retry_on ActiveRecord::Deadlocked
4
+
5
+ # Most jobs are safe to ignore if the underlying records are no longer available
6
+ # discard_on ActiveJob::DeserializationError
2
7
  end
@@ -9,11 +9,11 @@
9
9
  <%%= stylesheet_link_tag 'application', media: 'all' %>
10
10
  <%- else -%>
11
11
  <%- unless options[:skip_turbolinks] -%>
12
- <%%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
13
- <%%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>
12
+ <%%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
13
+ <%%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
14
14
  <%- else -%>
15
- <%%= stylesheet_link_tag 'application', media: 'all' %>
16
- <%%= javascript_include_tag 'application' %>
15
+ <%%= stylesheet_link_tag 'application', media: 'all' %>
16
+ <%%= javascript_pack_tag 'application' %>
17
17
  <%- end -%>
18
18
  <%- end -%>
19
19
  </head>
@@ -1,5 +1,4 @@
1
1
  require 'fileutils'
2
- include FileUtils
3
2
 
4
3
  # path to your application root.
5
4
  APP_ROOT = File.expand_path('..', __dir__)
@@ -8,27 +7,28 @@ def system!(*args)
8
7
  system(*args) || abort("\n== Command #{args} failed ==")
9
8
  end
10
9
 
11
- chdir APP_ROOT do
12
- # This script is a starting point to setup your application.
10
+ FileUtils.chdir APP_ROOT do
11
+ # This script is a way to setup or update your development environment automatically.
12
+ # This script is idempotent, so that you can run it at anytime and get an expectable outcome.
13
13
  # Add necessary setup steps to this file.
14
14
 
15
15
  puts '== Installing dependencies =='
16
16
  system! 'gem install bundler --conservative'
17
17
  system('bundle check') || system!('bundle install')
18
- <% unless options.skip_yarn? -%>
18
+ <% unless options.skip_javascript? -%>
19
19
 
20
- # Install JavaScript dependencies if using Yarn
20
+ # Install JavaScript dependencies
21
21
  # system('bin/yarn')
22
22
  <% end -%>
23
23
  <% unless options.skip_active_record? -%>
24
24
 
25
25
  # puts "\n== Copying sample files =="
26
26
  # unless File.exist?('config/database.yml')
27
- # cp 'config/database.yml.sample', 'config/database.yml'
27
+ # FileUtils.cp 'config/database.yml.sample', 'config/database.yml'
28
28
  # end
29
29
 
30
30
  puts "\n== Preparing database =="
31
- system! 'bin/rails db:setup'
31
+ system! 'bin/rails db:prepare'
32
32
  <% end -%>
33
33
 
34
34
  puts "\n== Removing old logs and tempfiles =="
@@ -11,6 +11,8 @@ require "active_job/railtie"
11
11
  <%= comment_if :skip_active_storage %>require "active_storage/engine"
12
12
  require "action_controller/railtie"
13
13
  <%= comment_if :skip_action_mailer %>require "action_mailer/railtie"
14
+ <%= comment_if :skip_action_mailbox %>require "action_mailbox/engine"
15
+ <%= comment_if :skip_action_text %>require "action_text/engine"
14
16
  require "action_view/railtie"
15
17
  <%= comment_if :skip_action_cable %>require "action_cable/engine"
16
18
  <%= comment_if :skip_sprockets %>require "sprockets/railtie"
@@ -2,7 +2,7 @@ development:
2
2
  adapter: async
3
3
 
4
4
  test:
5
- adapter: async
5
+ adapter: test
6
6
 
7
7
  production:
8
8
  adapter: redis
@@ -24,12 +24,12 @@ test:
24
24
  <<: *default
25
25
  database: <%= app_name %>_test
26
26
 
27
- # As with config/secrets.yml, you never want to store sensitive information,
27
+ # As with config/credentials.yml, you never want to store sensitive information,
28
28
  # like your database password, in your source code. If your source code is
29
29
  # ever seen by anyone, they now have access to your database.
30
30
  #
31
31
  # Instead, provide the password as a unix environment variable when you boot
32
- # the app. Read http://guides.rubyonrails.org/configuring.html#configuring-a-database
32
+ # the app. Read https://guides.rubyonrails.org/configuring.html#configuring-a-database
33
33
  # for a full rundown on how to provide these environment variables in a
34
34
  # production deployment.
35
35
  #
@@ -60,12 +60,12 @@ test:
60
60
  <<: *default
61
61
  database: <%= app_name[0,4] %>_tst
62
62
 
63
- # As with config/secrets.yml, you never want to store sensitive information,
63
+ # As with config/credentials.yml, you never want to store sensitive information,
64
64
  # like your database password, in your source code. If your source code is
65
65
  # ever seen by anyone, they now have access to your database.
66
66
  #
67
67
  # Instead, provide the password as a unix environment variable when you boot
68
- # the app. Read http://guides.rubyonrails.org/configuring.html#configuring-a-database
68
+ # the app. Read https://guides.rubyonrails.org/configuring.html#configuring-a-database
69
69
  # for a full rundown on how to provide these environment variables in a
70
70
  # production deployment.
71
71
  #
@@ -54,12 +54,12 @@ test:
54
54
  <<: *default
55
55
  url: jdbc:db://localhost/<%= app_name %>_test
56
56
 
57
- # As with config/secrets.yml, you never want to store sensitive information,
57
+ # As with config/credentials.yml, you never want to store sensitive information,
58
58
  # like your database password, in your source code. If your source code is
59
59
  # ever seen by anyone, they now have access to your database.
60
60
  #
61
61
  # Instead, provide the password as a unix environment variable when you boot
62
- # the app. Read http://guides.rubyonrails.org/configuring.html#configuring-a-database
62
+ # the app. Read https://guides.rubyonrails.org/configuring.html#configuring-a-database
63
63
  # for a full rundown on how to provide these environment variables in a
64
64
  # production deployment.
65
65
  #
@@ -1,4 +1,4 @@
1
- # MySQL. Versions 5.1.10 and up are supported.
1
+ # MySQL. Versions 5.5.8 and up are supported.
2
2
  #
3
3
  # Install the MySQL driver:
4
4
  # gem install activerecord-jdbcmysql-adapter
@@ -27,12 +27,12 @@ test:
27
27
  <<: *default
28
28
  database: <%= app_name %>_test
29
29
 
30
- # As with config/secrets.yml, you never want to store sensitive information,
30
+ # As with config/credentials.yml, you never want to store sensitive information,
31
31
  # like your database password, in your source code. If your source code is
32
32
  # ever seen by anyone, they now have access to your database.
33
33
  #
34
34
  # Instead, provide the password as a unix environment variable when you boot
35
- # the app. Read http://guides.rubyonrails.org/configuring.html#configuring-a-database
35
+ # the app. Read https://guides.rubyonrails.org/configuring.html#configuring-a-database
36
36
  # for a full rundown on how to provide these environment variables in a
37
37
  # production deployment.
38
38
  #
@@ -1,4 +1,4 @@
1
- # PostgreSQL. Versions 9.1 and up are supported.
1
+ # PostgreSQL. Versions 9.3 and up are supported.
2
2
  #
3
3
  # Configure Using Gemfile
4
4
  # gem 'activerecord-jdbcpostgresql-adapter'
@@ -43,12 +43,12 @@ test:
43
43
  <<: *default
44
44
  database: <%= app_name %>_test
45
45
 
46
- # As with config/secrets.yml, you never want to store sensitive information,
46
+ # As with config/credentials.yml, you never want to store sensitive information,
47
47
  # like your database password, in your source code. If your source code is
48
48
  # ever seen by anyone, they now have access to your database.
49
49
  #
50
50
  # Instead, provide the password as a unix environment variable when you boot
51
- # the app. Read http://guides.rubyonrails.org/configuring.html#configuring-a-database
51
+ # the app. Read https://guides.rubyonrails.org/configuring.html#configuring-a-database
52
52
  # for a full rundown on how to provide these environment variables in a
53
53
  # production deployment.
54
54
  #
@@ -1,4 +1,4 @@
1
- # SQLite version 3.x
1
+ # SQLite. Versions 3.8.0 and up are supported.
2
2
  # gem 'activerecord-jdbcsqlite3-adapter'
3
3
  #
4
4
  # Configure Using Gemfile
@@ -1,4 +1,4 @@
1
- # MySQL. Versions 5.1.10 and up are supported.
1
+ # MySQL. Versions 5.5.8 and up are supported.
2
2
  #
3
3
  # Install the MySQL driver
4
4
  # gem install mysql2
@@ -11,7 +11,7 @@
11
11
  #
12
12
  default: &default
13
13
  adapter: mysql2
14
- encoding: utf8
14
+ encoding: utf8mb4
15
15
  pool: <%%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
16
16
  username: root
17
17
  password:
@@ -32,12 +32,12 @@ test:
32
32
  <<: *default
33
33
  database: <%= app_name %>_test
34
34
 
35
- # As with config/secrets.yml, you never want to store sensitive information,
35
+ # As with config/credentials.yml, you never want to store sensitive information,
36
36
  # like your database password, in your source code. If your source code is
37
37
  # ever seen by anyone, they now have access to your database.
38
38
  #
39
39
  # Instead, provide the password as a unix environment variable when you boot
40
- # the app. Read http://guides.rubyonrails.org/configuring.html#configuring-a-database
40
+ # the app. Read https://guides.rubyonrails.org/configuring.html#configuring-a-database
41
41
  # for a full rundown on how to provide these environment variables in a
42
42
  # production deployment.
43
43
  #
@@ -33,12 +33,12 @@ test:
33
33
  <<: *default
34
34
  database: <%= app_name %>_test
35
35
 
36
- # As with config/secrets.yml, you never want to store sensitive information,
36
+ # As with config/credentials.yml, you never want to store sensitive information,
37
37
  # like your database password, in your source code. If your source code is
38
38
  # ever seen by anyone, they now have access to your database.
39
39
  #
40
40
  # Instead, provide the password as a unix environment variable when you boot
41
- # the app. Read http://guides.rubyonrails.org/configuring.html#configuring-a-database
41
+ # the app. Read https://guides.rubyonrails.org/configuring.html#configuring-a-database
42
42
  # for a full rundown on how to provide these environment variables in a
43
43
  # production deployment.
44
44
  #
@@ -1,10 +1,10 @@
1
- # PostgreSQL. Versions 9.1 and up are supported.
1
+ # PostgreSQL. Versions 9.3 and up are supported.
2
2
  #
3
3
  # Install the pg driver:
4
4
  # gem install pg
5
- # On OS X with Homebrew:
5
+ # On macOS with Homebrew:
6
6
  # gem install pg -- --with-pg-config=/usr/local/bin/pg_config
7
- # On OS X with MacPorts:
7
+ # On macOS with MacPorts:
8
8
  # gem install pg -- --with-pg-config=/opt/local/lib/postgresql84/bin/pg_config
9
9
  # On Windows:
10
10
  # gem install pg
@@ -18,7 +18,7 @@ default: &default
18
18
  adapter: postgresql
19
19
  encoding: unicode
20
20
  # For details on connection pooling, see Rails configuration guide
21
- # http://guides.rubyonrails.org/configuring.html#database-pooling
21
+ # https://guides.rubyonrails.org/configuring.html#database-pooling
22
22
  pool: <%%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
23
23
 
24
24
  development:
@@ -59,12 +59,12 @@ test:
59
59
  <<: *default
60
60
  database: <%= app_name %>_test
61
61
 
62
- # As with config/secrets.yml, you never want to store sensitive information,
62
+ # As with config/credentials.yml, you never want to store sensitive information,
63
63
  # like your database password, in your source code. If your source code is
64
64
  # ever seen by anyone, they now have access to your database.
65
65
  #
66
66
  # Instead, provide the password as a unix environment variable when you boot
67
- # the app. Read http://guides.rubyonrails.org/configuring.html#configuring-a-database
67
+ # the app. Read https://guides.rubyonrails.org/configuring.html#configuring-a-database
68
68
  # for a full rundown on how to provide these environment variables in a
69
69
  # production deployment.
70
70
  #
@@ -1,4 +1,4 @@
1
- # SQLite version 3.x
1
+ # SQLite. Versions 3.8.0 and up are supported.
2
2
  # gem install sqlite3
3
3
  #
4
4
  # Ensure the SQLite 3 gem is defined in your Gemfile
@@ -26,12 +26,12 @@ test:
26
26
  <<: *default
27
27
  database: <%= app_name %>_test
28
28
 
29
- # As with config/secrets.yml, you never want to store sensitive information,
29
+ # As with config/credentials.yml, you never want to store sensitive information,
30
30
  # like your database password, in your source code. If your source code is
31
31
  # ever seen by anyone, they now have access to your database.
32
32
  #
33
33
  # Instead, provide the password as a unix environment variable when you boot
34
- # the app. Read http://guides.rubyonrails.org/configuring.html#configuring-a-database
34
+ # the app. Read https://guides.rubyonrails.org/configuring.html#configuring-a-database
35
35
  # for a full rundown on how to provide these environment variables in a
36
36
  # production deployment.
37
37
  #
@@ -15,8 +15,11 @@ Rails.application.configure do
15
15
  # Enable/disable caching. By default caching is disabled.
16
16
  # Run rails dev:cache to toggle caching.
17
17
  if Rails.root.join('tmp', 'caching-dev.txt').exist?
18
+ <%- unless options.api? -%>
18
19
  config.action_controller.perform_caching = true
20
+ config.action_controller.enable_fragment_cache_logging = true
19
21
 
22
+ <%- end -%>
20
23
  config.cache_store = :memory_store
21
24
  config.public_file_server.headers = {
22
25
  'Cache-Control' => "public, max-age=#{2.days.to_i}"
@@ -28,7 +31,7 @@ Rails.application.configure do
28
31
  end
29
32
  <%- unless skip_active_storage? -%>
30
33
 
31
- # Store uploaded files on the local file system (see config/storage.yml for options)
34
+ # Store uploaded files on the local file system (see config/storage.yml for options).
32
35
  config.active_storage.service = :local
33
36
  <%- end -%>
34
37
  <%- unless options.skip_action_mailer? -%>
@@ -60,7 +63,7 @@ Rails.application.configure do
60
63
  config.assets.quiet = true
61
64
  <%- end -%>
62
65
 
63
- # Raises error for missing translations
66
+ # Raises error for missing translations.
64
67
  # config.action_view.raise_on_missing_translations = true
65
68
 
66
69
  # Use an evented file watcher to asynchronously detect changes in source code,
@@ -12,7 +12,9 @@ Rails.application.configure do
12
12
 
13
13
  # Full error reports are disabled and caching is turned on.
14
14
  config.consider_all_requests_local = false
15
+ <%- unless options.api? -%>
15
16
  config.action_controller.perform_caching = true
17
+ <%- end -%>
16
18
 
17
19
  # Ensures that a master key has been made available in either ENV["RAILS_MASTER_KEY"]
18
20
  # or in config/master.key. This key is used to decrypt credentials (and other encrypted files).
@@ -23,19 +25,12 @@ Rails.application.configure do
23
25
  config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present?
24
26
 
25
27
  <%- unless options.skip_sprockets? -%>
26
- <%- if options.skip_javascript? -%>
27
- # Compress CSS.
28
- <%- else -%>
29
- # Compress JavaScripts and CSS.
30
- config.assets.js_compressor = :uglifier
31
- <%- end -%>
28
+ # Compress CSS using a preprocessor.
32
29
  # config.assets.css_compressor = :sass
33
30
 
34
31
  # Do not fallback to assets pipeline if a precompiled asset is missed.
35
32
  config.assets.compile = false
36
33
 
37
- # `config.assets.precompile` and `config.assets.version` have moved to config/initializers/assets.rb
38
-
39
34
  <%- end -%>
40
35
  # Enable serving of images, stylesheets, and JavaScripts from an asset server.
41
36
  # config.action_controller.asset_host = 'http://assets.example.com'
@@ -45,12 +40,12 @@ Rails.application.configure do
45
40
  # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for NGINX
46
41
 
47
42
  <%- unless skip_active_storage? -%>
48
- # Store uploaded files on the local file system (see config/storage.yml for options)
43
+ # Store uploaded files on the local file system (see config/storage.yml for options).
49
44
  config.active_storage.service = :local
50
45
 
51
46
  <%- end -%>
52
47
  <%- unless options[:skip_action_cable] -%>
53
- # Mount Action Cable outside main process or domain
48
+ # Mount Action Cable outside main process or domain.
54
49
  # config.action_cable.mount_path = nil
55
50
  # config.action_cable.url = 'wss://example.com/cable'
56
51
  # config.action_cable.allowed_request_origins = [ 'http://example.com', /http:\/\/example.*/ ]
@@ -69,9 +64,9 @@ Rails.application.configure do
69
64
  # Use a different cache store in production.
70
65
  # config.cache_store = :mem_cache_store
71
66
 
72
- # Use a real queuing backend for Active Job (and separate queues per environment)
67
+ # Use a real queuing backend for Active Job (and separate queues per environment).
73
68
  # config.active_job.queue_adapter = :resque
74
- # config.active_job.queue_name_prefix = "<%= app_name %>_#{Rails.env}"
69
+ # config.active_job.queue_name_prefix = "<%= app_name %>_production"
75
70
 
76
71
  <%- unless options.skip_action_mailer? -%>
77
72
  config.action_mailer.perform_caching = false
@@ -105,4 +100,25 @@ Rails.application.configure do
105
100
  # Do not dump schema after migrations.
106
101
  config.active_record.dump_schema_after_migration = false
107
102
  <%- end -%>
103
+
104
+ # Inserts middleware to perform automatic connection switching.
105
+ # The `database_selector` hash is used to pass options to the DatabaseSelector
106
+ # middleware. The `delay` is used to determine how long to wait after a write
107
+ # to send a subsequent read to the primary.
108
+ #
109
+ # The `database_resolver` class is used by the middleware to determine which
110
+ # database is appropriate to use based on the time delay.
111
+ #
112
+ # The `database_resolver_context` class is used by the middleware to set
113
+ # timestamps for the last write to the primary. The resolver uses the context
114
+ # class timestamps to determine how long to wait before reading from the
115
+ # replica.
116
+ #
117
+ # By default Rails will store a last write timestamp in the session. The
118
+ # DatabaseSelector middleware is designed as such you can define your own
119
+ # strategy for connection switching and pass that into the middleware through
120
+ # these configuration options.
121
+ # config.active_record.database_selector = { delay: 2.seconds }
122
+ # config.active_record.database_resolver = ActiveRecord::Middleware::DatabaseSelector::Resolver
123
+ # config.active_record.database_resolver_context = ActiveRecord::Middleware::DatabaseSelector::Resolver::Session
108
124
  end