railties 6.0.0.beta2 → 6.0.2.rc1

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 (69) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +150 -7
  3. data/RDOC_MAIN.rdoc +3 -3
  4. data/README.rdoc +1 -1
  5. data/lib/rails/api/task.rb +1 -0
  6. data/lib/rails/application.rb +23 -5
  7. data/lib/rails/application/bootstrap.rb +2 -10
  8. data/lib/rails/application/configuration.rb +45 -1
  9. data/lib/rails/application/default_middleware_stack.rb +1 -0
  10. data/lib/rails/application/dummy_erb_compiler.rb +18 -0
  11. data/lib/rails/application/finisher.rb +44 -1
  12. data/lib/rails/autoloaders.rb +14 -2
  13. data/lib/rails/command/base.rb +4 -0
  14. data/lib/rails/command/environment_argument.rb +7 -4
  15. data/lib/rails/commands/console/console_command.rb +6 -0
  16. data/lib/rails/commands/credentials/USAGE +1 -1
  17. data/lib/rails/commands/credentials/credentials_command.rb +17 -3
  18. data/lib/rails/commands/dbconsole/dbconsole_command.rb +19 -7
  19. data/lib/rails/commands/dev/dev_command.rb +4 -2
  20. data/lib/rails/commands/encrypted/USAGE +28 -0
  21. data/lib/rails/commands/encrypted/encrypted_command.rb +1 -0
  22. data/lib/rails/commands/initializers/initializers_command.rb +7 -0
  23. data/lib/rails/commands/notes/notes_command.rb +1 -1
  24. data/lib/rails/commands/runner/runner_command.rb +7 -3
  25. data/lib/rails/commands/server/server_command.rb +8 -6
  26. data/lib/rails/engine.rb +41 -42
  27. data/lib/rails/engine/configuration.rb +3 -2
  28. data/lib/rails/gem_version.rb +2 -2
  29. data/lib/rails/generators.rb +2 -0
  30. data/lib/rails/generators/app_base.rb +5 -5
  31. data/lib/rails/generators/app_name.rb +2 -2
  32. data/lib/rails/generators/base.rb +4 -0
  33. data/lib/rails/generators/database.rb +1 -1
  34. data/lib/rails/generators/erb/scaffold/templates/_form.html.erb.tt +6 -3
  35. data/lib/rails/generators/erb/scaffold/templates/show.html.erb.tt +8 -0
  36. data/lib/rails/generators/generated_attribute.rb +36 -10
  37. data/lib/rails/generators/named_base.rb +1 -1
  38. data/lib/rails/generators/rails/app/app_generator.rb +1 -0
  39. data/lib/rails/generators/rails/app/templates/Gemfile.tt +4 -4
  40. data/lib/rails/generators/rails/app/templates/app/javascript/packs/application.js.tt +8 -0
  41. data/lib/rails/generators/rails/app/templates/bin/setup.tt +3 -2
  42. data/lib/rails/generators/rails/app/templates/config/databases/jdbcsqlite3.yml.tt +1 -1
  43. data/lib/rails/generators/rails/app/templates/config/databases/sqlite3.yml.tt +1 -1
  44. data/lib/rails/generators/rails/app/templates/config/environments/development.rb.tt +2 -0
  45. data/lib/rails/generators/rails/app/templates/config/environments/production.rb.tt +2 -0
  46. data/lib/rails/generators/rails/app/templates/config/environments/test.rb.tt +10 -4
  47. data/lib/rails/generators/rails/app/templates/config/initializers/content_security_policy.rb.tt +3 -0
  48. data/lib/rails/generators/rails/app/templates/config/initializers/new_framework_defaults_6_0.rb.tt +12 -0
  49. data/lib/rails/generators/rails/app/templates/config/puma.rb.tt +3 -0
  50. data/lib/rails/generators/rails/app/templates/gitignore.tt +1 -0
  51. data/lib/rails/generators/rails/app/templates/package.json.tt +3 -3
  52. data/lib/rails/generators/rails/app/templates/public/robots.txt +1 -1
  53. data/lib/rails/generators/rails/app/templates/ruby-version.tt +1 -1
  54. data/lib/rails/generators/rails/assets/assets_generator.rb +7 -0
  55. data/lib/rails/generators/rails/db/system/change/change_generator.rb +12 -2
  56. data/lib/rails/generators/rails/plugin/plugin_generator.rb +0 -15
  57. data/lib/rails/generators/rails/plugin/templates/gitignore.tt +1 -0
  58. data/lib/rails/generators/rails/scaffold_controller/scaffold_controller_generator.rb +14 -0
  59. data/lib/rails/generators/rails/scaffold_controller/templates/api_controller.rb.tt +1 -1
  60. data/lib/rails/generators/rails/scaffold_controller/templates/controller.rb.tt +1 -1
  61. data/lib/rails/generators/test_unit/model/templates/fixtures.yml.tt +2 -2
  62. data/lib/rails/generators/test_unit/scaffold/scaffold_generator.rb +7 -2
  63. data/lib/rails/info.rb +1 -1
  64. data/lib/rails/mailers_controller.rb +6 -3
  65. data/lib/rails/source_annotation_extractor.rb +19 -6
  66. data/lib/rails/tasks.rb +1 -0
  67. data/lib/rails/tasks/zeitwerk.rake +66 -0
  68. metadata +18 -13
  69. data/lib/rails/generators/rails/app/templates/bin/update.tt +0 -33
@@ -13,3 +13,11 @@ require("@rails/activestorage").start()
13
13
  <%- unless options[:skip_action_cable] -%>
14
14
  require("channels")
15
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)
@@ -8,7 +8,8 @@ def system!(*args)
8
8
  end
9
9
 
10
10
  FileUtils.chdir APP_ROOT do
11
- # This script is a starting point to setup your application.
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.
12
13
  # Add necessary setup steps to this file.
13
14
 
14
15
  puts '== Installing dependencies =='
@@ -27,7 +28,7 @@ FileUtils.chdir APP_ROOT do
27
28
  # end
28
29
 
29
30
  puts "\n== Preparing database =="
30
- system! 'bin/rails db:setup'
31
+ system! 'bin/rails db:prepare'
31
32
  <% end -%>
32
33
 
33
34
  puts "\n== Removing old logs and tempfiles =="
@@ -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
- # 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
@@ -15,9 +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
19
20
  config.action_controller.enable_fragment_cache_logging = true
20
21
 
22
+ <%- end -%>
21
23
  config.cache_store = :memory_store
22
24
  config.public_file_server.headers = {
23
25
  'Cache-Control' => "public, max-age=#{2.days.to_i}"
@@ -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).
@@ -1,11 +1,17 @@
1
+ # The test environment is used exclusively to run your application's
2
+ # test suite. You never need to work with it otherwise. Remember that
3
+ # your test database is "scratch space" for the test suite and is wiped
4
+ # and recreated between test runs. Don't rely on the data there!
5
+
1
6
  Rails.application.configure do
2
7
  # Settings specified here will take precedence over those in config/application.rb.
3
8
 
4
- # The test environment is used exclusively to run your application's
5
- # test suite. You never need to work with it otherwise. Remember that
6
- # your test database is "scratch space" for the test suite and is wiped
7
- # and recreated between test runs. Don't rely on the data there!
9
+ <%-# Spring executes the reloaders when files change. %>
10
+ <%- if spring_install? -%>
11
+ config.cache_classes = false
12
+ <%- else -%>
8
13
  config.cache_classes = true
14
+ <%- end -%>
9
15
 
10
16
  # Do not eager load code on boot. This avoids loading your whole application
11
17
  # just for the purpose of running a single test. If you are using a tool that
@@ -23,6 +23,9 @@
23
23
  # If you are using UJS then enable automatic nonce generation
24
24
  # Rails.application.config.content_security_policy_nonce_generator = -> request { SecureRandom.base64(16) }
25
25
 
26
+ # Set the nonce only to specific directives
27
+ # Rails.application.config.content_security_policy_nonce_directives = %w(script-src)
28
+
26
29
  # Report CSP violations to a specified URI
27
30
  # For further information see the following documentation:
28
31
  # https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy-Report-Only
@@ -16,6 +16,9 @@
16
16
  # It's best enabled when your entire app is migrated and stable on 6.0.
17
17
  # Rails.application.config.action_dispatch.use_cookies_with_metadata = true
18
18
 
19
+ # Change the return value of `ActionDispatch::Response#content_type` to Content-Type header without modification.
20
+ # Rails.application.config.action_dispatch.return_only_media_type_on_content_type = false
21
+
19
22
  # Return false instead of self when enqueuing is aborted from a callback.
20
23
  # Rails.application.config.active_job.return_false_on_aborted_enqueue = true
21
24
 
@@ -23,6 +26,10 @@
23
26
  # Rails.application.config.active_storage.queues.analysis = :active_storage_analysis
24
27
  # Rails.application.config.active_storage.queues.purge = :active_storage_purge
25
28
 
29
+ # When assigning to a collection of attachments declared via `has_many_attached`, replace existing
30
+ # attachments instead of appending. Use #attach to add new attachments without replacing existing ones.
31
+ # Rails.application.config.active_storage.replace_on_assign_to_many = true
32
+
26
33
  # Use ActionMailer::MailDeliveryJob for sending parameterized and normal mail.
27
34
  #
28
35
  # The default delivery jobs (ActionMailer::Parameterized::DeliveryJob, ActionMailer::DeliveryJob),
@@ -31,3 +38,8 @@
31
38
  # MailDeliveryJob to ensure all delivery jobs are processed properly.
32
39
  # Make sure your entire app is migrated and stable on 6.0 before using this setting.
33
40
  # Rails.application.config.action_mailer.delivery_job = "ActionMailer::MailDeliveryJob"
41
+
42
+ # Enable the same cache key to be reused when the object being cached of type
43
+ # `ActiveRecord::Relation` changes by moving the volatile information (max updated at and count)
44
+ # of the relation's cache key into the cache version to support recycling cache key.
45
+ # Rails.application.config.active_record.collection_cache_versioning = true
@@ -16,6 +16,9 @@ port ENV.fetch("PORT") { 3000 }
16
16
  #
17
17
  environment ENV.fetch("RAILS_ENV") { "development" }
18
18
 
19
+ # Specifies the `pidfile` that Puma will use.
20
+ pidfile ENV.fetch("PIDFILE") { "tmp/pids/server.pid" }
21
+
19
22
  # Specifies the number of `workers` to boot in clustered mode.
20
23
  # Workers are forked web server processes. If using threads and workers together
21
24
  # the concurrency of the application would be max `threads` * `workers`.
@@ -11,6 +11,7 @@
11
11
  # Ignore the default SQLite database.
12
12
  /db/*.sqlite3
13
13
  /db/*.sqlite3-journal
14
+ /db/*.sqlite3-*
14
15
 
15
16
  <% end -%>
16
17
  # Ignore all logfiles and tempfiles.
@@ -2,10 +2,10 @@
2
2
  "name": "<%= app_name %>",
3
3
  "private": true,
4
4
  "dependencies": {
5
- "@rails/ujs": "^6.0.0-alpha"<% unless options[:skip_turbolinks] %>,
5
+ "@rails/ujs": "^6.0.0"<% unless options[:skip_turbolinks] %>,
6
6
  "turbolinks": "^5.2.0"<% end -%><% unless skip_active_storage? %>,
7
- "@rails/activestorage": "^6.0.0-alpha"<% end -%><% unless options[:skip_action_cable] %>,
8
- "@rails/actioncable": "^6.0.0-alpha"<% end %>
7
+ "@rails/activestorage": "^6.0.0"<% end -%><% unless options[:skip_action_cable] %>,
8
+ "@rails/actioncable": "^6.0.0"<% end %>
9
9
  },
10
10
  "version": "0.1.0"
11
11
  }
@@ -1 +1 @@
1
- # See http://www.robotstxt.org/robotstxt.html for documentation on how to use the robots.txt file
1
+ # See https://www.robotstxt.org/robotstxt.html for documentation on how to use the robots.txt file
@@ -1 +1 @@
1
- <%= ENV["RBENV_VERSION"] || ENV["rvm_ruby_string"] || "#{RUBY_ENGINE}-#{RUBY_ENGINE_VERSION}" -%>
1
+ <%= ENV["RBENV_VERSION"] || ENV["rvm_ruby_string"] || "#{RUBY_ENGINE}-#{RUBY_ENGINE_VERSION}" %>
@@ -3,7 +3,10 @@
3
3
  module Rails
4
4
  module Generators
5
5
  class AssetsGenerator < NamedBase # :nodoc:
6
+ class_option :javascripts, type: :boolean, desc: "Generate JavaScripts"
6
7
  class_option :stylesheets, type: :boolean, desc: "Generate Stylesheets"
8
+
9
+ class_option :javascript_engine, desc: "Engine for JavaScripts"
7
10
  class_option :stylesheet_engine, desc: "Engine for Stylesheets"
8
11
 
9
12
  private
@@ -11,6 +14,10 @@ module Rails
11
14
  file_name
12
15
  end
13
16
 
17
+ hook_for :javascript_engine do |javascript_engine|
18
+ invoke javascript_engine, [name] if options[:javascripts]
19
+ end
20
+
14
21
  hook_for :stylesheet_engine do |stylesheet_engine|
15
22
  invoke stylesheet_engine, [name] if options[:stylesheets]
16
23
  end
@@ -35,8 +35,9 @@ module Rails
35
35
  end
36
36
 
37
37
  def edit_gemfile
38
- database_gem_name, _ = gem_for_database
39
- gsub_file("Gemfile", all_database_gems_regex, database_gem_name)
38
+ name, version = gem_for_database
39
+ gsub_file("Gemfile", all_database_gems_regex, name)
40
+ gsub_file("Gemfile", gem_entry_regex_for(name), gem_entry_for(name, *version))
40
41
  end
41
42
 
42
43
  private
@@ -48,6 +49,15 @@ module Rails
48
49
  all_database_gem_names = all_database_gems.map(&:first)
49
50
  /(\b#{all_database_gem_names.join('\b|\b')}\b)/
50
51
  end
52
+
53
+ def gem_entry_regex_for(gem_name)
54
+ /^gem.*\b#{gem_name}\b.*/
55
+ end
56
+
57
+ def gem_entry_for(*gem_name_and_version)
58
+ gem_name_and_version.map! { |segment| "'#{segment}'" }
59
+ "gem #{gem_name_and_version.join(", ")}"
60
+ end
51
61
  end
52
62
  end
53
63
  end
@@ -144,17 +144,6 @@ task default: :test
144
144
  end
145
145
  end
146
146
 
147
- def javascripts
148
- return if options.skip_javascript?
149
-
150
- if mountable?
151
- template "rails/javascripts.js",
152
- "app/assets/javascripts/#{namespaced_name}/application.js"
153
- elsif full?
154
- empty_directory_with_keep_file "app/assets/javascripts/#{namespaced_name}"
155
- end
156
- end
157
-
158
147
  def bin(force = false)
159
148
  bin_file = engine? ? "bin/rails.tt" : "bin/test.tt"
160
149
  template bin_file, force: force do |content|
@@ -236,10 +225,6 @@ task default: :test
236
225
  build(:stylesheets) unless api?
237
226
  end
238
227
 
239
- def create_javascript_files
240
- build(:javascripts) unless api?
241
- end
242
-
243
228
  def create_bin_files
244
229
  build(:bin)
245
230
  end
@@ -5,6 +5,7 @@ pkg/
5
5
  <% if sqlite3? -%>
6
6
  <%= dummy_path %>/db/*.sqlite3
7
7
  <%= dummy_path %>/db/*.sqlite3-journal
8
+ <%= dummy_path %>/db/*.sqlite3-*
8
9
  <% end -%>
9
10
  <%= dummy_path %>/log/*.log
10
11
  <% unless options[:skip_javascript] -%>
@@ -32,6 +32,20 @@ module Rails
32
32
  hook_for :helper, as: :scaffold do |invoked|
33
33
  invoke invoked, [ controller_name ]
34
34
  end
35
+
36
+ private
37
+
38
+ def permitted_params
39
+ attachments, others = attributes_names.partition { |name| attachments?(name) }
40
+ params = others.map { |name| ":#{name}" }
41
+ params += attachments.map { |name| "#{name}: []" }
42
+ params.join(", ")
43
+ end
44
+
45
+ def attachments?(name)
46
+ attribute = attributes.find { |attr| attr.name == name }
47
+ attribute&.attachments?
48
+ end
35
49
  end
36
50
  end
37
51
  end
@@ -54,7 +54,7 @@ class <%= controller_class_name %>Controller < ApplicationController
54
54
  <%- if attributes_names.empty? -%>
55
55
  params.fetch(:<%= singular_table_name %>, {})
56
56
  <%- else -%>
57
- params.require(:<%= singular_table_name %>).permit(<%= attributes_names.map { |name| ":#{name}" }.join(', ') %>)
57
+ params.require(:<%= singular_table_name %>).permit(<%= permitted_params %>)
58
58
  <%- end -%>
59
59
  end
60
60
  end
@@ -61,7 +61,7 @@ class <%= controller_class_name %>Controller < ApplicationController
61
61
  <%- if attributes_names.empty? -%>
62
62
  params.fetch(:<%= singular_table_name %>, {})
63
63
  <%- else -%>
64
- params.require(:<%= singular_table_name %>).permit(<%= attributes_names.map { |name| ":#{name}" }.join(', ') %>)
64
+ params.require(:<%= singular_table_name %>).permit(<%= permitted_params %>)
65
65
  <%- end -%>
66
66
  end
67
67
  end
@@ -1,4 +1,4 @@
1
- # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
1
+ # Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
2
2
  <% unless attributes.empty? -%>
3
3
  <% %w(one two).each do |name| %>
4
4
  <%= name %>:
@@ -7,7 +7,7 @@
7
7
  password_digest: <%%= BCrypt::Password.create('secret') %>
8
8
  <%- elsif attribute.reference? -%>
9
9
  <%= yaml_key_value(attribute.column_name.sub(/_id$/, ''), attribute.default || name) %>
10
- <%- else -%>
10
+ <%- elsif !attribute.virtual? -%>
11
11
  <%= yaml_key_value(attribute.column_name, attribute.default) %>
12
12
  <%- end -%>
13
13
  <%- if attribute.polymorphic? -%>
@@ -49,16 +49,21 @@ module TestUnit # :nodoc:
49
49
  attributes_names.map do |name|
50
50
  if %w(password password_confirmation).include?(name) && attributes.any?(&:password_digest?)
51
51
  ["#{name}", "'secret'"]
52
- else
52
+ elsif !virtual?(name)
53
53
  ["#{name}", "@#{singular_table_name}.#{name}"]
54
54
  end
55
- end.sort.to_h
55
+ end.compact.sort.to_h
56
56
  end
57
57
 
58
58
  def boolean?(name)
59
59
  attribute = attributes.find { |attr| attr.name == name }
60
60
  attribute&.type == :boolean
61
61
  end
62
+
63
+ def virtual?(name)
64
+ attribute = attributes.find { |attr| attr.name == name }
65
+ attribute&.virtual?
66
+ end
62
67
  end
63
68
  end
64
69
  end
@@ -68,7 +68,7 @@ module Rails
68
68
 
69
69
  # The RubyGems version, if it's installed.
70
70
  property "RubyGems version" do
71
- Gem::RubyGemsVersion
71
+ Gem::VERSION
72
72
  end
73
73
 
74
74
  property "Rack version" do
@@ -5,8 +5,9 @@ require "rails/application_controller"
5
5
  class Rails::MailersController < Rails::ApplicationController # :nodoc:
6
6
  prepend_view_path ActionDispatch::DebugView::RESCUES_TEMPLATE_PATH
7
7
 
8
+ around_action :set_locale, only: :preview
9
+ before_action :find_preview, only: :preview
8
10
  before_action :require_local!, unless: :show_previews?
9
- before_action :find_preview, :set_locale, only: :preview
10
11
 
11
12
  helper_method :part_query, :locale_query
12
13
 
@@ -38,7 +39,7 @@ class Rails::MailersController < Rails::ApplicationController # :nodoc:
38
39
  end
39
40
  else
40
41
  @part = find_preferred_part(request.format, Mime[:html], Mime[:text])
41
- render action: "email", layout: false, formats: %w[html]
42
+ render action: "email", layout: false, formats: [:html]
42
43
  end
43
44
  else
44
45
  raise AbstractController::ActionNotFound, "Email '#{@email_action}' not found in #{@preview.name}"
@@ -92,6 +93,8 @@ class Rails::MailersController < Rails::ApplicationController # :nodoc:
92
93
  end
93
94
 
94
95
  def set_locale
95
- I18n.locale = params[:locale] || I18n.default_locale
96
+ I18n.with_locale(params[:locale] || I18n.default_locale) do
97
+ yield
98
+ end
96
99
  end
97
100
  end
@@ -2,11 +2,6 @@
2
2
 
3
3
  require "active_support/deprecation"
4
4
 
5
- # Remove this deprecated class in the next minor version
6
- #:nodoc:
7
- SourceAnnotationExtractor = ActiveSupport::Deprecation::DeprecatedConstantProxy.
8
- new("SourceAnnotationExtractor", "Rails::SourceAnnotationExtractor")
9
-
10
5
  module Rails
11
6
  # Implements the logic behind <tt>Rails::Command::NotesCommand</tt>. See <tt>rails notes --help</tt> for usage information.
12
7
  #
@@ -29,6 +24,16 @@ module Rails
29
24
  directories.push(*dirs)
30
25
  end
31
26
 
27
+ def self.tags
28
+ @@tags ||= %w(OPTIMIZE FIXME TODO)
29
+ end
30
+
31
+ # Registers additional tags
32
+ # Rails::SourceAnnotationExtractor::Annotation.register_tags("TESTME", "DEPRECATEME")
33
+ def self.register_tags(*additional_tags)
34
+ tags.push(*additional_tags)
35
+ end
36
+
32
37
  def self.extensions
33
38
  @@extensions ||= {}
34
39
  end
@@ -66,6 +71,8 @@ module Rails
66
71
  # Prints all annotations with tag +tag+ under the root directories +app+,
67
72
  # +config+, +db+, +lib+, and +test+ (recursively).
68
73
  #
74
+ # If +tag+ is <tt>nil</tt>, annotations with either default or registered tags are printed.
75
+ #
69
76
  # Specific directories can be explicitly set using the <tt>:dirs</tt> key in +options+.
70
77
  #
71
78
  # Rails::SourceAnnotationExtractor.enumerate 'TODO|FIXME', dirs: %w(app lib), tag: true
@@ -75,7 +82,8 @@ module Rails
75
82
  # See <tt>#find_in</tt> for a list of file extensions that will be taken into account.
76
83
  #
77
84
  # This class method is the single entry point for the `rails notes` command.
78
- def self.enumerate(tag, options = {})
85
+ def self.enumerate(tag = nil, options = {})
86
+ tag ||= Annotation.tags.join("|")
79
87
  extractor = new(tag)
80
88
  dirs = options.delete(:dirs) || Annotation.directories
81
89
  extractor.display(extractor.find(dirs), options)
@@ -147,3 +155,8 @@ module Rails
147
155
  end
148
156
  end
149
157
  end
158
+
159
+ # Remove this deprecated class in the next minor version
160
+ #:nodoc:
161
+ SourceAnnotationExtractor = ActiveSupport::Deprecation::DeprecatedConstantProxy.
162
+ new("SourceAnnotationExtractor", "Rails::SourceAnnotationExtractor")
@@ -15,6 +15,7 @@ require "rake"
15
15
  routes
16
16
  tmp
17
17
  yarn
18
+ zeitwerk
18
19
  ).tap { |arr|
19
20
  arr << "statistics" if Rake.application.current_scope.empty?
20
21
  }.each do |task|