railties 5.2.2.1 → 6.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +338 -119
- data/MIT-LICENSE +1 -1
- data/RDOC_MAIN.rdoc +38 -32
- data/README.rdoc +2 -2
- data/lib/minitest/rails_plugin.rb +7 -11
- data/lib/rails.rb +5 -0
- data/lib/rails/all.rb +4 -0
- data/lib/rails/api/generator.rb +2 -1
- data/lib/rails/api/task.rb +17 -0
- data/lib/rails/app_loader.rb +2 -2
- data/lib/rails/app_updater.rb +3 -1
- data/lib/rails/application.rb +73 -30
- data/lib/rails/application/bootstrap.rb +2 -10
- data/lib/rails/application/configuration.rb +114 -13
- data/lib/rails/application/default_middleware_stack.rb +3 -0
- data/lib/rails/application/dummy_erb_compiler.rb +18 -0
- data/lib/rails/application/finisher.rb +54 -0
- data/lib/rails/autoloaders.rb +48 -0
- data/lib/rails/backtrace_cleaner.rb +5 -17
- data/lib/rails/code_statistics.rb +3 -3
- data/lib/rails/command.rb +11 -10
- data/lib/rails/command/actions.rb +10 -0
- data/lib/rails/command/base.rb +16 -4
- data/lib/rails/command/behavior.rb +7 -48
- data/lib/rails/command/environment_argument.rb +8 -15
- data/lib/rails/command/spellchecker.rb +58 -0
- data/lib/rails/commands/console/console_command.rb +6 -0
- data/lib/rails/commands/credentials/USAGE +19 -1
- data/lib/rails/commands/credentials/credentials_command.rb +54 -21
- data/lib/rails/commands/db/system/change/change_command.rb +20 -0
- data/lib/rails/commands/dbconsole/dbconsole_command.rb +20 -8
- data/lib/rails/commands/dev/dev_command.rb +19 -0
- data/lib/rails/commands/encrypted/USAGE +28 -0
- data/lib/rails/commands/encrypted/encrypted_command.rb +3 -2
- data/lib/rails/commands/help/help_command.rb +1 -1
- data/lib/rails/commands/initializers/initializers_command.rb +23 -0
- data/lib/rails/commands/new/new_command.rb +2 -2
- data/lib/rails/commands/notes/notes_command.rb +39 -0
- data/lib/rails/commands/plugin/plugin_command.rb +1 -1
- data/lib/rails/commands/routes/routes_command.rb +37 -0
- data/lib/rails/commands/runner/runner_command.rb +13 -9
- data/lib/rails/commands/secrets/USAGE +3 -3
- data/lib/rails/commands/secrets/secrets_command.rb +3 -3
- data/lib/rails/commands/server/server_command.rb +113 -50
- data/lib/rails/configuration.rb +1 -7
- data/lib/rails/engine.rb +44 -18
- data/lib/rails/engine/configuration.rb +5 -2
- data/lib/rails/gem_version.rb +3 -3
- data/lib/rails/generators.rb +11 -10
- data/lib/rails/generators/actions.rb +52 -39
- data/lib/rails/generators/app_base.rb +60 -98
- data/lib/rails/generators/app_name.rb +50 -0
- data/lib/rails/generators/base.rb +4 -0
- data/lib/rails/generators/database.rb +58 -0
- data/lib/rails/generators/erb/mailer/mailer_generator.rb +1 -1
- data/lib/rails/generators/erb/scaffold/templates/_form.html.erb.tt +6 -3
- data/lib/rails/generators/erb/scaffold/templates/index.html.erb.tt +1 -1
- data/lib/rails/generators/erb/scaffold/templates/show.html.erb.tt +9 -1
- data/lib/rails/generators/generated_attribute.rb +53 -27
- data/lib/rails/generators/migration.rb +1 -2
- data/lib/rails/generators/model_helpers.rb +8 -1
- data/lib/rails/generators/named_base.rb +2 -6
- data/lib/rails/generators/rails/app/app_generator.rb +38 -71
- data/lib/rails/generators/rails/app/templates/Gemfile.tt +8 -11
- data/lib/rails/generators/rails/app/templates/app/assets/config/manifest.js.tt +0 -3
- data/lib/rails/generators/rails/app/templates/app/{assets/javascripts/cable.js.tt → javascript/channels/consumer.js} +2 -9
- data/lib/rails/generators/rails/app/templates/app/javascript/channels/index.js +5 -0
- data/lib/rails/generators/rails/app/templates/app/javascript/packs/application.js.tt +23 -0
- data/lib/rails/generators/rails/app/templates/app/jobs/application_job.rb.tt +5 -0
- data/lib/rails/generators/rails/app/templates/app/views/layouts/application.html.erb.tt +4 -4
- data/lib/rails/generators/rails/app/templates/bin/setup.tt +7 -7
- data/lib/rails/generators/rails/app/templates/config/application.rb.tt +2 -0
- data/lib/rails/generators/rails/app/templates/config/cable.yml.tt +1 -1
- data/lib/rails/generators/rails/app/templates/config/databases/frontbase.yml.tt +2 -2
- data/lib/rails/generators/rails/app/templates/config/databases/ibm_db.yml.tt +2 -2
- data/lib/rails/generators/rails/app/templates/config/databases/jdbc.yml.tt +2 -2
- data/lib/rails/generators/rails/app/templates/config/databases/jdbcmysql.yml.tt +3 -3
- data/lib/rails/generators/rails/app/templates/config/databases/jdbcpostgresql.yml.tt +3 -3
- data/lib/rails/generators/rails/app/templates/config/databases/jdbcsqlite3.yml.tt +1 -1
- data/lib/rails/generators/rails/app/templates/config/databases/mysql.yml.tt +4 -4
- data/lib/rails/generators/rails/app/templates/config/databases/oracle.yml.tt +2 -2
- data/lib/rails/generators/rails/app/templates/config/databases/postgresql.yml.tt +6 -6
- data/lib/rails/generators/rails/app/templates/config/databases/sqlite3.yml.tt +1 -1
- data/lib/rails/generators/rails/app/templates/config/databases/sqlserver.yml.tt +2 -2
- data/lib/rails/generators/rails/app/templates/config/environments/development.rb.tt +5 -2
- data/lib/rails/generators/rails/app/templates/config/environments/production.rb.tt +28 -12
- data/lib/rails/generators/rails/app/templates/config/environments/test.rb.tt +13 -6
- data/lib/rails/generators/rails/app/templates/config/initializers/assets.rb.tt +1 -1
- data/lib/rails/generators/rails/app/templates/config/initializers/content_security_policy.rb.tt +7 -0
- data/lib/rails/generators/rails/app/templates/config/initializers/new_framework_defaults_6_0.rb.tt +45 -0
- data/lib/rails/generators/rails/app/templates/config/locales/en.yml +1 -1
- data/lib/rails/generators/rails/app/templates/config/puma.rb.tt +7 -3
- data/lib/rails/generators/rails/app/templates/config/routes.rb.tt +1 -1
- data/lib/rails/generators/rails/app/templates/config/spring.rb.tt +6 -6
- data/lib/rails/generators/rails/app/templates/gitignore.tt +3 -7
- data/lib/rails/generators/rails/app/templates/package.json.tt +7 -1
- data/lib/rails/generators/rails/app/templates/public/robots.txt +1 -1
- data/lib/rails/generators/rails/app/templates/ruby-version.tt +1 -1
- data/lib/rails/generators/rails/app/templates/test/channels/application_cable/connection_test.rb.tt +11 -0
- data/lib/rails/generators/rails/app/templates/test/test_helper.rb.tt +7 -0
- data/lib/rails/generators/rails/assets/USAGE +1 -4
- data/lib/rails/generators/rails/assets/assets_generator.rb +0 -1
- data/lib/rails/generators/rails/controller/controller_generator.rb +11 -1
- data/lib/rails/generators/rails/credentials/credentials_generator.rb +7 -8
- data/lib/rails/generators/rails/db/system/change/change_generator.rb +65 -0
- data/lib/rails/generators/rails/encrypted_file/encrypted_file_generator.rb +4 -5
- data/lib/rails/generators/rails/helper/helper_generator.rb +5 -0
- data/lib/rails/generators/rails/plugin/plugin_generator.rb +9 -33
- data/lib/rails/generators/rails/plugin/templates/app/controllers/%namespaced_name%/application_controller.rb.tt +1 -1
- data/lib/rails/generators/rails/plugin/templates/app/helpers/%namespaced_name%/application_helper.rb.tt +1 -1
- data/lib/rails/generators/rails/plugin/templates/app/jobs/%namespaced_name%/application_job.rb.tt +1 -1
- data/lib/rails/generators/rails/plugin/templates/app/mailers/%namespaced_name%/application_mailer.rb.tt +1 -1
- data/lib/rails/generators/rails/plugin/templates/app/models/%namespaced_name%/application_record.rb.tt +1 -1
- data/lib/rails/generators/rails/plugin/templates/gitignore.tt +2 -1
- data/lib/rails/generators/rails/plugin/templates/lib/%namespaced_name%/engine.rb.tt +1 -1
- data/lib/rails/generators/rails/plugin/templates/lib/%namespaced_name%/railtie.rb.tt +1 -1
- data/lib/rails/generators/rails/plugin/templates/test/test_helper.rb.tt +1 -2
- data/lib/rails/generators/rails/scaffold_controller/scaffold_controller_generator.rb +14 -0
- data/lib/rails/generators/rails/scaffold_controller/templates/api_controller.rb.tt +1 -1
- data/lib/rails/generators/rails/scaffold_controller/templates/controller.rb.tt +1 -1
- data/lib/rails/generators/resource_helpers.rb +1 -6
- data/lib/rails/generators/test_unit/integration/integration_generator.rb +6 -0
- data/lib/rails/generators/test_unit/job/job_generator.rb +5 -0
- data/lib/rails/generators/test_unit/mailer/mailer_generator.rb +1 -1
- data/lib/rails/generators/test_unit/model/templates/fixtures.yml.tt +2 -2
- data/lib/rails/generators/test_unit/scaffold/scaffold_generator.rb +12 -2
- data/lib/rails/generators/test_unit/scaffold/templates/system_test.rb.tt +8 -0
- data/lib/rails/generators/test_unit/system/system_generator.rb +5 -0
- data/lib/rails/generators/testing/behaviour.rb +3 -0
- data/lib/rails/info.rb +3 -3
- data/lib/rails/info_controller.rb +1 -1
- data/lib/rails/mailers_controller.rb +7 -4
- data/lib/rails/paths.rb +19 -9
- data/lib/rails/railtie.rb +1 -1
- data/lib/rails/ruby_version_check.rb +3 -3
- data/lib/rails/secrets.rb +0 -1
- data/lib/rails/source_annotation_extractor.rb +138 -117
- data/lib/rails/tasks.rb +1 -0
- data/lib/rails/tasks/annotations.rake +9 -9
- data/lib/rails/tasks/dev.rake +5 -4
- data/lib/rails/tasks/framework.rake +5 -1
- data/lib/rails/tasks/initializers.rake +5 -4
- data/lib/rails/tasks/log.rake +0 -1
- data/lib/rails/tasks/routes.rake +4 -26
- data/lib/rails/tasks/statistics.rake +4 -0
- data/lib/rails/tasks/yarn.rake +2 -3
- data/lib/rails/tasks/zeitwerk.rake +66 -0
- data/lib/rails/templates/rails/welcome/index.html.erb +2 -2
- data/lib/rails/test_help.rb +11 -9
- data/lib/rails/test_unit/reporter.rb +1 -1
- data/lib/rails/test_unit/runner.rb +5 -5
- data/lib/rails/test_unit/testing.rake +1 -1
- metadata +36 -23
- data/lib/rails/generators/js/assets/assets_generator.rb +0 -15
- data/lib/rails/generators/js/assets/templates/javascript.js +0 -2
- data/lib/rails/generators/rails/app/templates/app/assets/javascripts/application.js.tt +0 -22
- data/lib/rails/generators/rails/app/templates/bin/bundle.tt +0 -2
- data/lib/rails/generators/rails/app/templates/bin/update.tt +0 -34
- data/lib/rails/generators/rails/app/templates/config/initializers/new_framework_defaults_5_2.rb.tt +0 -38
- data/lib/rails/generators/rails/assets/templates/javascript.js +0 -2
@@ -88,7 +88,7 @@ task default: :test
|
|
88
88
|
|
89
89
|
PASSTHROUGH_OPTIONS = [
|
90
90
|
:skip_active_record, :skip_active_storage, :skip_action_mailer, :skip_javascript, :skip_action_cable, :skip_sprockets, :database,
|
91
|
-
:
|
91
|
+
:api, :quiet, :pretend, :skip
|
92
92
|
]
|
93
93
|
|
94
94
|
def generate_test_dummy(force = false)
|
@@ -98,6 +98,7 @@ task default: :test
|
|
98
98
|
opts[:skip_listen] = true
|
99
99
|
opts[:skip_git] = true
|
100
100
|
opts[:skip_turbolinks] = true
|
101
|
+
opts[:skip_webpack_install] = true
|
101
102
|
opts[:dummy_app] = true
|
102
103
|
|
103
104
|
invoke Rails::Generators::AppGenerator,
|
@@ -113,7 +114,7 @@ task default: :test
|
|
113
114
|
end
|
114
115
|
|
115
116
|
def test_dummy_assets
|
116
|
-
template "rails/javascripts.js", "#{dummy_path}/app/
|
117
|
+
template "rails/javascripts.js", "#{dummy_path}/app/javascript/packs/application.js", force: true
|
117
118
|
template "rails/stylesheets.css", "#{dummy_path}/app/assets/stylesheets/application.css", force: true
|
118
119
|
template "rails/dummy_manifest.js", "#{dummy_path}/app/assets/config/manifest.js", force: true
|
119
120
|
end
|
@@ -143,17 +144,6 @@ task default: :test
|
|
143
144
|
end
|
144
145
|
end
|
145
146
|
|
146
|
-
def javascripts
|
147
|
-
return if options.skip_javascript?
|
148
|
-
|
149
|
-
if mountable?
|
150
|
-
template "rails/javascripts.js",
|
151
|
-
"app/assets/javascripts/#{namespaced_name}/application.js"
|
152
|
-
elsif full?
|
153
|
-
empty_directory_with_keep_file "app/assets/javascripts/#{namespaced_name}"
|
154
|
-
end
|
155
|
-
end
|
156
|
-
|
157
147
|
def bin(force = false)
|
158
148
|
bin_file = engine? ? "bin/rails.tt" : "bin/test.tt"
|
159
149
|
template bin_file, force: force do |content|
|
@@ -235,10 +225,6 @@ task default: :test
|
|
235
225
|
build(:stylesheets) unless api?
|
236
226
|
end
|
237
227
|
|
238
|
-
def create_javascript_files
|
239
|
-
build(:javascripts) unless api?
|
240
|
-
end
|
241
|
-
|
242
228
|
def create_bin_files
|
243
229
|
build(:bin)
|
244
230
|
end
|
@@ -262,16 +248,6 @@ task default: :test
|
|
262
248
|
|
263
249
|
public_task :apply_rails_template
|
264
250
|
|
265
|
-
def run_after_bundle_callbacks
|
266
|
-
unless @after_bundle_callbacks.empty?
|
267
|
-
ActiveSupport::Deprecation.warn("`after_bundle` is deprecated and will be removed in the next version of Rails. ")
|
268
|
-
end
|
269
|
-
|
270
|
-
@after_bundle_callbacks.each do |callback|
|
271
|
-
callback.call
|
272
|
-
end
|
273
|
-
end
|
274
|
-
|
275
251
|
def name
|
276
252
|
@name ||= begin
|
277
253
|
# same as ActiveSupport::Inflector#underscore except not replacing '-'
|
@@ -348,9 +324,9 @@ task default: :test
|
|
348
324
|
def wrap_in_modules(unwrapped_code)
|
349
325
|
unwrapped_code = "#{unwrapped_code}".strip.gsub(/\s$\n/, "")
|
350
326
|
modules.reverse.inject(unwrapped_code) do |content, mod|
|
351
|
-
str = "module #{mod}\n"
|
352
|
-
str
|
353
|
-
str
|
327
|
+
str = +"module #{mod}\n"
|
328
|
+
str << content.lines.map { |line| " #{line}" }.join
|
329
|
+
str << (content.present? ? "\nend" : "end")
|
354
330
|
end
|
355
331
|
end
|
356
332
|
|
@@ -385,11 +361,11 @@ task default: :test
|
|
385
361
|
end
|
386
362
|
|
387
363
|
def valid_const?
|
388
|
-
if
|
364
|
+
if /-\d/.match?(original_name)
|
389
365
|
raise Error, "Invalid plugin name #{original_name}. Please give a name which does not contain a namespace starting with numeric characters."
|
390
|
-
elsif
|
366
|
+
elsif /[^\w-]+/.match?(original_name)
|
391
367
|
raise Error, "Invalid plugin name #{original_name}. Please give a name which uses only alphabetic, numeric, \"_\" or \"-\" characters."
|
392
|
-
elsif
|
368
|
+
elsif /^\d/.match?(camelized)
|
393
369
|
raise Error, "Invalid plugin name #{original_name}. Please give a name which does not start with numbers."
|
394
370
|
elsif RESERVED_NAMES.include?(name)
|
395
371
|
raise Error, "Invalid plugin name #{original_name}. Please give a " \
|
@@ -5,9 +5,10 @@ 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
|
-
<% unless options[:
|
11
|
+
<% unless options[:skip_javascript] -%>
|
11
12
|
<%= dummy_path %>/node_modules/
|
12
13
|
<%= dummy_path %>/yarn-error.log
|
13
14
|
<% end -%>
|
@@ -10,8 +10,7 @@ ActiveRecord::Migrator.migrations_paths << File.expand_path('../db/migrate', __d
|
|
10
10
|
<% end -%>
|
11
11
|
require "rails/test_help"
|
12
12
|
|
13
|
-
# Filter out
|
14
|
-
# to be shown.
|
13
|
+
# Filter out the backtrace from minitest while preserving the one from other libraries.
|
15
14
|
Minitest.backtrace_filter = Minitest::BacktraceFilter.new
|
16
15
|
|
17
16
|
<% unless engine? -%>
|
@@ -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(<%=
|
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(<%=
|
64
|
+
params.require(:<%= singular_table_name %>).permit(<%= permitted_params %>)
|
65
65
|
<%- end -%>
|
66
66
|
end
|
67
67
|
end
|
@@ -25,13 +25,8 @@ module Rails
|
|
25
25
|
assign_controller_names!(controller_name.pluralize)
|
26
26
|
end
|
27
27
|
|
28
|
-
# TODO Change this to private once we've dropped Ruby 2.2 support.
|
29
|
-
# Workaround for Ruby 2.2 "private attribute?" warning.
|
30
|
-
protected
|
31
|
-
|
32
|
-
attr_reader :controller_name, :controller_file_name
|
33
|
-
|
34
28
|
private
|
29
|
+
attr_reader :controller_name, :controller_file_name
|
35
30
|
|
36
31
|
def controller_class_path
|
37
32
|
if options[:model_name]
|
@@ -10,6 +10,12 @@ module TestUnit # :nodoc:
|
|
10
10
|
def create_test_files
|
11
11
|
template "integration_test.rb", File.join("test/integration", class_path, "#{file_name}_test.rb")
|
12
12
|
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def file_name
|
17
|
+
@_file_name ||= super.sub(/_test\z/i, "")
|
18
|
+
end
|
13
19
|
end
|
14
20
|
end
|
15
21
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Read about fixtures at
|
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
|
-
<%-
|
10
|
+
<%- elsif !attribute.virtual? -%>
|
11
11
|
<%= yaml_key_value(attribute.column_name, attribute.default) %>
|
12
12
|
<%- end -%>
|
13
13
|
<%- if attribute.polymorphic? -%>
|
@@ -49,10 +49,20 @@ 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
|
-
|
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
|
+
end
|
57
|
+
|
58
|
+
def boolean?(name)
|
59
|
+
attribute = attributes.find { |attr| attr.name == name }
|
60
|
+
attribute&.type == :boolean
|
61
|
+
end
|
62
|
+
|
63
|
+
def virtual?(name)
|
64
|
+
attribute = attributes.find { |attr| attr.name == name }
|
65
|
+
attribute&.virtual?
|
56
66
|
end
|
57
67
|
end
|
58
68
|
end
|
@@ -16,8 +16,12 @@ 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
|
+
<%- if boolean?(attr) -%>
|
20
|
+
check "<%= attr.humanize %>" if <%= value %>
|
21
|
+
<%- else -%>
|
19
22
|
fill_in "<%= attr.humanize %>", with: <%= value %>
|
20
23
|
<%- end -%>
|
24
|
+
<%- end -%>
|
21
25
|
click_on "Create <%= human_name %>"
|
22
26
|
|
23
27
|
assert_text "<%= human_name %> was successfully created"
|
@@ -29,8 +33,12 @@ class <%= class_name.pluralize %>Test < ApplicationSystemTestCase
|
|
29
33
|
click_on "Edit", match: :first
|
30
34
|
|
31
35
|
<%- attributes_hash.each do |attr, value| -%>
|
36
|
+
<%- if boolean?(attr) -%>
|
37
|
+
check "<%= attr.humanize %>" if <%= value %>
|
38
|
+
<%- else -%>
|
32
39
|
fill_in "<%= attr.humanize %>", with: <%= value %>
|
33
40
|
<%- end -%>
|
41
|
+
<%- end -%>
|
34
42
|
click_on "Update <%= human_name %>"
|
35
43
|
|
36
44
|
assert_text "<%= human_name %> was successfully updated"
|
@@ -67,6 +67,9 @@ module Rails
|
|
67
67
|
def run_generator(args = default_arguments, config = {})
|
68
68
|
capture(:stdout) do
|
69
69
|
args += ["--skip-bundle"] unless args.include? "--dev"
|
70
|
+
args |= ["--skip-bootsnap"] unless args.include? "--no-skip-bootsnap"
|
71
|
+
args |= ["--skip-webpack-install"] unless args.include? "--no-skip-webpack-install"
|
72
|
+
|
70
73
|
generator_class.start(args, config.reverse_merge(destination_root: destination_root))
|
71
74
|
end
|
72
75
|
end
|
data/lib/rails/info.rb
CHANGED
@@ -41,7 +41,7 @@ module Rails
|
|
41
41
|
alias inspect to_s
|
42
42
|
|
43
43
|
def to_html
|
44
|
-
"<table>".
|
44
|
+
(+"<table>").tap do |table|
|
45
45
|
properties.each do |(name, value)|
|
46
46
|
table << %(<tr><td class="name">#{CGI.escapeHTML(name.to_s)}</td>)
|
47
47
|
formatted_value = if value.kind_of?(Array)
|
@@ -63,12 +63,12 @@ module Rails
|
|
63
63
|
|
64
64
|
# The Ruby version and platform, e.g. "2.0.0-p247 (x86_64-darwin12.4.0)".
|
65
65
|
property "Ruby version" do
|
66
|
-
|
66
|
+
RUBY_DESCRIPTION
|
67
67
|
end
|
68
68
|
|
69
69
|
# The RubyGems version, if it's installed.
|
70
70
|
property "RubyGems version" do
|
71
|
-
Gem::
|
71
|
+
Gem::VERSION
|
72
72
|
end
|
73
73
|
|
74
74
|
property "Rack version" do
|
@@ -4,7 +4,7 @@ require "rails/application_controller"
|
|
4
4
|
require "action_dispatch/routing/inspector"
|
5
5
|
|
6
6
|
class Rails::InfoController < Rails::ApplicationController # :nodoc:
|
7
|
-
prepend_view_path ActionDispatch::
|
7
|
+
prepend_view_path ActionDispatch::DebugView::RESCUES_TEMPLATE_PATH
|
8
8
|
layout -> { request.xhr? ? false : "application" }
|
9
9
|
|
10
10
|
before_action :require_local!
|
@@ -3,10 +3,11 @@
|
|
3
3
|
require "rails/application_controller"
|
4
4
|
|
5
5
|
class Rails::MailersController < Rails::ApplicationController # :nodoc:
|
6
|
-
prepend_view_path ActionDispatch::
|
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:
|
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.
|
96
|
+
I18n.with_locale(params[:locale] || I18n.default_locale) do
|
97
|
+
yield
|
98
|
+
end
|
96
99
|
end
|
97
100
|
end
|
data/lib/rails/paths.rb
CHANGED
@@ -113,10 +113,11 @@ module Rails
|
|
113
113
|
attr_accessor :glob
|
114
114
|
|
115
115
|
def initialize(root, current, paths, options = {})
|
116
|
-
@paths
|
117
|
-
@current
|
118
|
-
@root
|
119
|
-
@glob
|
116
|
+
@paths = paths
|
117
|
+
@current = current
|
118
|
+
@root = root
|
119
|
+
@glob = options[:glob]
|
120
|
+
@exclude = options[:exclude]
|
120
121
|
|
121
122
|
options[:autoload_once] ? autoload_once! : skip_autoload_once!
|
122
123
|
options[:eager_load] ? eager_load! : skip_eager_load!
|
@@ -189,13 +190,11 @@ module Rails
|
|
189
190
|
raise "You need to set a path root" unless @root.path
|
190
191
|
result = []
|
191
192
|
|
192
|
-
each do |
|
193
|
-
path = File.expand_path(
|
193
|
+
each do |path|
|
194
|
+
path = File.expand_path(path, @root.path)
|
194
195
|
|
195
196
|
if @glob && File.directory?(path)
|
196
|
-
|
197
|
-
result.concat(Dir.glob(@glob).map { |file| File.join path, file }.sort)
|
198
|
-
end
|
197
|
+
result.concat files_in(path)
|
199
198
|
else
|
200
199
|
result << path
|
201
200
|
end
|
@@ -222,6 +221,17 @@ module Rails
|
|
222
221
|
end
|
223
222
|
|
224
223
|
alias to_a expanded
|
224
|
+
|
225
|
+
private
|
226
|
+
|
227
|
+
def files_in(path)
|
228
|
+
Dir.chdir(path) do
|
229
|
+
files = Dir.glob(@glob)
|
230
|
+
files -= @exclude if @exclude
|
231
|
+
files.map! { |file| File.join(path, file) }
|
232
|
+
files.sort
|
233
|
+
end
|
234
|
+
end
|
225
235
|
end
|
226
236
|
end
|
227
237
|
end
|