railties 7.0.0.rc3 → 7.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +9 -0
- data/lib/rails/application/configuration.rb +9 -3
- data/lib/rails/gem_version.rb +1 -1
- data/lib/rails/generators/app_base.rb +53 -23
- data/lib/rails/generators/erb/scaffold/templates/edit.html.erb.tt +2 -2
- data/lib/rails/generators/erb/scaffold/templates/index.html.erb.tt +7 -2
- data/lib/rails/generators/erb/scaffold/templates/new.html.erb.tt +1 -1
- data/lib/rails/generators/erb/scaffold/templates/partial.html.erb.tt +0 -3
- data/lib/rails/generators/erb/scaffold/templates/show.html.erb.tt +3 -3
- data/lib/rails/generators/named_base.rb +10 -10
- data/lib/rails/generators/rails/app/app_generator.rb +1 -0
- data/lib/rails/generators/rails/app/templates/Gemfile.tt +10 -14
- data/lib/rails/generators/rails/app/templates/config/environments/production.rb.tt +0 -31
- data/lib/rails/generators/rails/app/templates/config/initializers/new_framework_defaults_7_0.rb.tt +0 -4
- data/lib/rails/generators/rails/plugin/plugin_generator.rb +8 -16
- data/lib/rails/generators/rails/plugin/templates/%name%.gemspec.tt +1 -1
- data/lib/rails/generators/rails/plugin/templates/Gemfile.tt +5 -14
- data/lib/rails/generators/rails/plugin/templates/test/test_helper.rb.tt +0 -5
- data/lib/rails/generators/test_unit/scaffold/templates/functional_test.rb.tt +5 -5
- data/lib/rails/generators/testing/behaviour.rb +2 -2
- data/lib/rails/templates/rails/welcome/index.html.erb +60 -48
- metadata +17 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5cb58ddc9e6fbbf28a0fb9c625cecec9cd282d59ccd697cf37cd1f78f7d25811
|
4
|
+
data.tar.gz: b6304f9dfa982671da582fb01c63f310b76d3d043aca2826ff5c54acecc7f90c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: febb1c2b1fc87226219dc2cf5870c236b801624c9a4d8c62b0853a1e3e033fbfec76e5b418de34774e069aa0b60d8b2c687c68ab729cc7165806974f16373b40
|
7
|
+
data.tar.gz: a6305f03e1ed58b3afd6a9647b6fb43a48007c08370db1e066c15e135ce159c9adc7ac84c318033264e1c18cafdf2d9446d3e08341e4922c46fb7c7b83a81ff7
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,8 @@
|
|
1
|
+
## Rails 7.0.0 (December 15, 2021) ##
|
2
|
+
|
3
|
+
* No changes.
|
4
|
+
|
5
|
+
|
1
6
|
## Rails 7.0.0.rc3 (December 14, 2021) ##
|
2
7
|
|
3
8
|
* Allow localhost with a port by default in development
|
@@ -6,6 +11,10 @@
|
|
6
11
|
|
7
12
|
## Rails 7.0.0.rc2 (December 14, 2021) ##
|
8
13
|
|
14
|
+
* No changes
|
15
|
+
|
16
|
+
## Rails 7.0.0.rc1 (December 06, 2021) ##
|
17
|
+
|
9
18
|
* Remove deprecated `config` in `dbconsole`.
|
10
19
|
|
11
20
|
*Rafael Mendonça França*
|
@@ -33,8 +33,12 @@ module Rails
|
|
33
33
|
@filter_parameters = []
|
34
34
|
@filter_redirect = []
|
35
35
|
@helpers_paths = []
|
36
|
-
|
37
|
-
|
36
|
+
if Rails.env.development?
|
37
|
+
@hosts = ActionDispatch::HostAuthorization::ALLOWED_HOSTS_IN_DEVELOPMENT +
|
38
|
+
ENV["RAILS_DEVELOPMENT_HOSTS"].to_s.split(",").map(&:strip)
|
39
|
+
else
|
40
|
+
@hosts = []
|
41
|
+
end
|
38
42
|
@host_authorization = {}
|
39
43
|
@public_file_server = ActiveSupport::OrderedOptions.new
|
40
44
|
@public_file_server.enabled = true
|
@@ -84,6 +88,7 @@ module Rails
|
|
84
88
|
if respond_to?(:action_controller)
|
85
89
|
action_controller.per_form_csrf_tokens = true
|
86
90
|
action_controller.forgery_protection_origin_check = true
|
91
|
+
action_controller.urlsafe_csrf_tokens = false
|
87
92
|
end
|
88
93
|
|
89
94
|
ActiveSupport.to_time_preserves_timezone = true
|
@@ -169,7 +174,7 @@ module Rails
|
|
169
174
|
end
|
170
175
|
|
171
176
|
if respond_to?(:action_controller)
|
172
|
-
action_controller.urlsafe_csrf_tokens
|
177
|
+
action_controller.delete(:urlsafe_csrf_tokens)
|
173
178
|
end
|
174
179
|
|
175
180
|
if respond_to?(:action_view)
|
@@ -236,6 +241,7 @@ module Rails
|
|
236
241
|
" -frames:v 1 -f image2"
|
237
242
|
|
238
243
|
active_storage.variant_processor = :vips
|
244
|
+
active_storage.multiple_file_field_include_hidden = true
|
239
245
|
end
|
240
246
|
|
241
247
|
if respond_to?(:active_record)
|
data/lib/rails/gem_version.rb
CHANGED
@@ -100,7 +100,8 @@ module Rails
|
|
100
100
|
desc: "Show this help message and quit"
|
101
101
|
end
|
102
102
|
|
103
|
-
def initialize(*)
|
103
|
+
def initialize(positional_argv, option_argv, *)
|
104
|
+
@argv = [*positional_argv, *option_argv]
|
104
105
|
@gem_filter = lambda { |gem| true }
|
105
106
|
super
|
106
107
|
end
|
@@ -172,10 +173,10 @@ module Rails
|
|
172
173
|
return [] if options[:skip_asset_pipeline]
|
173
174
|
|
174
175
|
if options[:asset_pipeline] == "sprockets"
|
175
|
-
GemfileEntry.
|
176
|
+
GemfileEntry.floats "sprockets-rails",
|
176
177
|
"The original asset pipeline for Rails [https://github.com/rails/sprockets-rails]"
|
177
178
|
elsif options[:asset_pipeline] == "propshaft"
|
178
|
-
GemfileEntry.
|
179
|
+
GemfileEntry.floats "propshaft", "The modern asset pipeline for Rails [https://github.com/rails/propshaft]"
|
179
180
|
else
|
180
181
|
[]
|
181
182
|
end
|
@@ -255,6 +256,10 @@ module Rails
|
|
255
256
|
new(name, version, comment)
|
256
257
|
end
|
257
258
|
|
259
|
+
def self.floats(name, comment = nil)
|
260
|
+
new(name, nil, comment)
|
261
|
+
end
|
262
|
+
|
258
263
|
def self.path(name, path, comment = nil)
|
259
264
|
new(name, nil, comment, path: path)
|
260
265
|
end
|
@@ -268,26 +273,30 @@ module Rails
|
|
268
273
|
version
|
269
274
|
end
|
270
275
|
end
|
276
|
+
|
277
|
+
def to_s
|
278
|
+
[ ("# #{comment}\n" if comment),
|
279
|
+
("# " if commented_out), "gem \"#{name}\"", (", \"#{version}\"" if version),
|
280
|
+
*options.map { |key, val| ", #{key}: #{val.inspect}" }
|
281
|
+
].compact.join
|
282
|
+
end
|
283
|
+
end
|
284
|
+
|
285
|
+
def rails_prerelease?
|
286
|
+
options.dev? || options.edge? || options.main?
|
271
287
|
end
|
272
288
|
|
273
289
|
def rails_gemfile_entry
|
274
290
|
if options.dev?
|
275
|
-
|
276
|
-
GemfileEntry.path("rails", Rails::Generators::RAILS_DEV_PATH, "Use local checkout of Rails")
|
277
|
-
]
|
291
|
+
GemfileEntry.path("rails", Rails::Generators::RAILS_DEV_PATH, "Use local checkout of Rails")
|
278
292
|
elsif options.edge?
|
279
293
|
edge_branch = Rails.gem_version.prerelease? ? "main" : [*Rails.gem_version.segments.first(2), "stable"].join("-")
|
280
|
-
|
281
|
-
GemfileEntry.github("rails", "rails/rails", edge_branch, "Use specific branch of Rails")
|
282
|
-
]
|
294
|
+
GemfileEntry.github("rails", "rails/rails", edge_branch, "Use specific branch of Rails")
|
283
295
|
elsif options.main?
|
284
|
-
|
285
|
-
GemfileEntry.github("rails", "rails/rails", "main", "Use main development branch of Rails")
|
286
|
-
]
|
296
|
+
GemfileEntry.github("rails", "rails/rails", "main", "Use main development branch of Rails")
|
287
297
|
else
|
288
|
-
|
289
|
-
|
290
|
-
%(Bundle edge Rails instead: gem "rails", github: "rails/rails", branch: "main"))]
|
298
|
+
GemfileEntry.version("rails", rails_version_specifier,
|
299
|
+
%(Bundle edge Rails instead: gem "rails", github: "rails/rails", branch: "main"))
|
291
300
|
end
|
292
301
|
end
|
293
302
|
|
@@ -306,17 +315,16 @@ module Rails
|
|
306
315
|
|
307
316
|
def jbuilder_gemfile_entry
|
308
317
|
return [] if options[:skip_jbuilder]
|
309
|
-
|
310
|
-
GemfileEntry.new "jbuilder", "~> 2.11", comment, {}, options[:api]
|
318
|
+
GemfileEntry.new "jbuilder", nil, "Build JSON APIs with ease [https://github.com/rails/jbuilder]", {}, options[:api]
|
311
319
|
end
|
312
320
|
|
313
321
|
def javascript_gemfile_entry
|
314
322
|
return [] if options[:skip_javascript]
|
315
323
|
|
316
324
|
if adjusted_javascript_option == "importmap"
|
317
|
-
GemfileEntry.
|
325
|
+
GemfileEntry.floats "importmap-rails", "Use JavaScript with ESM import maps [https://github.com/rails/importmap-rails]"
|
318
326
|
else
|
319
|
-
GemfileEntry.
|
327
|
+
GemfileEntry.floats "jsbundling-rails", "Bundle and transpile JavaScript [https://github.com/rails/jsbundling-rails]"
|
320
328
|
end
|
321
329
|
end
|
322
330
|
|
@@ -324,10 +332,10 @@ module Rails
|
|
324
332
|
return [] if options[:skip_javascript] || options[:skip_hotwire]
|
325
333
|
|
326
334
|
turbo_rails_entry =
|
327
|
-
GemfileEntry.
|
335
|
+
GemfileEntry.floats "turbo-rails", "Hotwire's SPA-like page accelerator [https://turbo.hotwired.dev]"
|
328
336
|
|
329
337
|
stimulus_rails_entry =
|
330
|
-
GemfileEntry.
|
338
|
+
GemfileEntry.floats "stimulus-rails", "Hotwire's modest JavaScript framework [https://stimulus.hotwired.dev]"
|
331
339
|
|
332
340
|
[ turbo_rails_entry, stimulus_rails_entry ]
|
333
341
|
end
|
@@ -350,9 +358,9 @@ module Rails
|
|
350
358
|
return [] unless options[:css]
|
351
359
|
|
352
360
|
if !using_node? && options[:css] == "tailwind"
|
353
|
-
GemfileEntry.
|
361
|
+
GemfileEntry.floats "tailwindcss-rails", "Use Tailwind CSS [https://github.com/rails/tailwindcss-rails]"
|
354
362
|
else
|
355
|
-
GemfileEntry.
|
363
|
+
GemfileEntry.floats "cssbundling-rails", "Bundle and process CSS [https://github.com/rails/cssbundling-rails]"
|
356
364
|
end
|
357
365
|
end
|
358
366
|
|
@@ -410,6 +418,28 @@ module Rails
|
|
410
418
|
!options[:skip_bootsnap] && !options[:dev] && !defined?(JRUBY_VERSION)
|
411
419
|
end
|
412
420
|
|
421
|
+
def target_rails_prerelease(self_command = "new")
|
422
|
+
return unless rails_prerelease? && bundle_install?
|
423
|
+
|
424
|
+
if !File.exist?(File.expand_path("Gemfile", destination_root))
|
425
|
+
create_file("Gemfile", <<~GEMFILE)
|
426
|
+
source "https://rubygems.org"
|
427
|
+
git_source(:github) { |repo| "https://github.com/\#{repo}.git" }
|
428
|
+
#{rails_gemfile_entry}
|
429
|
+
GEMFILE
|
430
|
+
|
431
|
+
run_bundle
|
432
|
+
|
433
|
+
@argv[0] = destination_root
|
434
|
+
require "shellwords"
|
435
|
+
bundle_command("exec rails #{self_command} #{Shellwords.join(@argv)}")
|
436
|
+
exit
|
437
|
+
else
|
438
|
+
remove_file("Gemfile")
|
439
|
+
remove_file("Gemfile.lock")
|
440
|
+
end
|
441
|
+
end
|
442
|
+
|
413
443
|
def run_bundle
|
414
444
|
bundle_command("install", "BUNDLE_IGNORE_MESSAGES" => "1") if bundle_install?
|
415
445
|
end
|
@@ -5,6 +5,6 @@
|
|
5
5
|
<br>
|
6
6
|
|
7
7
|
<div>
|
8
|
-
<%%= link_to "Show this <%= human_name.downcase %>",
|
9
|
-
<%%= link_to "Back to <%= human_name.pluralize.downcase %>", <%= index_helper %>
|
8
|
+
<%%= link_to "Show this <%= human_name.downcase %>", <%= model_resource_name(prefix: "@") %> %> |
|
9
|
+
<%%= link_to "Back to <%= human_name.pluralize.downcase %>", <%= index_helper(type: :path) %> %>
|
10
10
|
</div>
|
@@ -3,7 +3,12 @@
|
|
3
3
|
<h1><%= human_name.pluralize %></h1>
|
4
4
|
|
5
5
|
<div id="<%= plural_table_name %>">
|
6
|
-
|
6
|
+
<%% @<%= plural_table_name %>.each do |<%= singular_table_name %>| %>
|
7
|
+
<%%= render <%= singular_table_name %> %>
|
8
|
+
<p>
|
9
|
+
<%%= link_to "Show this <%= human_name.downcase %>", <%= model_resource_name(singular_table_name) %> %>
|
10
|
+
</p>
|
11
|
+
<%% end %>
|
7
12
|
</div>
|
8
13
|
|
9
|
-
<%%= link_to "New <%= human_name.downcase %>",
|
14
|
+
<%%= link_to "New <%= human_name.downcase %>", <%= new_helper(type: :path) %> %>
|
@@ -3,8 +3,8 @@
|
|
3
3
|
<%%= render @<%= singular_table_name %> %>
|
4
4
|
|
5
5
|
<div>
|
6
|
-
<%%= link_to "Edit this <%= human_name.downcase %>",
|
7
|
-
<%%= link_to "Back to <%= human_name.pluralize.downcase %>", <%= index_helper %>
|
6
|
+
<%%= link_to "Edit this <%= human_name.downcase %>", <%= edit_helper(type: :path) %> %> |
|
7
|
+
<%%= link_to "Back to <%= human_name.pluralize.downcase %>", <%= index_helper(type: :path) %> %>
|
8
8
|
|
9
|
-
<%%= button_to "Destroy this <%= human_name.downcase %>", <%=
|
9
|
+
<%%= button_to "Destroy this <%= human_name.downcase %>", <%= model_resource_name(prefix: "@") %>, method: :delete %>
|
10
10
|
</div>
|
@@ -94,20 +94,20 @@ module Rails
|
|
94
94
|
singular_name == plural_name
|
95
95
|
end
|
96
96
|
|
97
|
-
def index_helper # :doc:
|
98
|
-
uncountable?
|
97
|
+
def index_helper(type: nil) # :doc:
|
98
|
+
[plural_route_name, ("index" if uncountable?), type].compact.join("_")
|
99
99
|
end
|
100
100
|
|
101
|
-
def show_helper # :doc:
|
102
|
-
"#{singular_route_name}
|
101
|
+
def show_helper(arg = "@#{singular_table_name}", type: :url) # :doc:
|
102
|
+
"#{singular_route_name}_#{type}(#{arg})"
|
103
103
|
end
|
104
104
|
|
105
|
-
def edit_helper # :doc:
|
106
|
-
"edit_#{show_helper}"
|
105
|
+
def edit_helper(...) # :doc:
|
106
|
+
"edit_#{show_helper(...)}"
|
107
107
|
end
|
108
108
|
|
109
|
-
def new_helper # :doc:
|
110
|
-
"new_#{singular_route_name}
|
109
|
+
def new_helper(type: :url) # :doc:
|
110
|
+
"new_#{singular_route_name}_#{type}"
|
111
111
|
end
|
112
112
|
|
113
113
|
def singular_table_name # :doc:
|
@@ -147,8 +147,8 @@ module Rails
|
|
147
147
|
model_resource_name(prefix: "@")
|
148
148
|
end
|
149
149
|
|
150
|
-
def model_resource_name(prefix: "") # :doc:
|
151
|
-
resource_name = "#{prefix}#{
|
150
|
+
def model_resource_name(base_name = singular_table_name, prefix: "") # :doc:
|
151
|
+
resource_name = "#{prefix}#{base_name}"
|
152
152
|
if options[:model_name]
|
153
153
|
"[#{controller_class_path.map { |name| ":" + name }.join(", ")}, #{resource_name}]"
|
154
154
|
else
|
@@ -2,14 +2,10 @@ source "https://rubygems.org"
|
|
2
2
|
git_source(:github) { |repo| "https://github.com/#{repo}.git" }
|
3
3
|
|
4
4
|
ruby <%= "\"#{RUBY_VERSION}\"" -%>
|
5
|
-
<% gemfile_entries.each do |gem| -%>
|
6
|
-
<% if gem.comment %>
|
7
5
|
|
8
|
-
|
6
|
+
<% gemfile_entries.each do |gemfile_entry| %>
|
7
|
+
<%= gemfile_entry %>
|
9
8
|
<% end -%>
|
10
|
-
<%= gem.commented_out ? "# " : "" %>gem "<%= gem.name %>"<%= %(, "#{gem.version}") if gem.version -%>
|
11
|
-
<% if gem.options.any? -%>, <%= gem.options.map { |k,v| "#{k}: #{v.inspect}" }.join(", ") %><% end -%>
|
12
|
-
<% end %>
|
13
9
|
<% unless options.minimal? -%>
|
14
10
|
|
15
11
|
# Use Kredis to get higher-level data types in Redis [https://github.com/rails/kredis]
|
@@ -24,12 +20,12 @@ gem "tzinfo-data", platforms: %i[ mingw mswin x64_mingw jruby ]
|
|
24
20
|
<% if depend_on_bootsnap? -%>
|
25
21
|
|
26
22
|
# Reduces boot times through caching; required in config/boot.rb
|
27
|
-
gem "bootsnap",
|
23
|
+
gem "bootsnap", require: false
|
28
24
|
<% end -%>
|
29
25
|
<% unless skip_sprockets? || options.minimal? -%>
|
30
26
|
|
31
27
|
# Use Sass to process CSS
|
32
|
-
# gem "sassc-rails"
|
28
|
+
# gem "sassc-rails"
|
33
29
|
<% end -%>
|
34
30
|
<% unless skip_active_storage? -%>
|
35
31
|
|
@@ -44,18 +40,18 @@ gem "bootsnap", ">= 1.4.4", require: false
|
|
44
40
|
<% if RUBY_ENGINE == "ruby" -%>
|
45
41
|
|
46
42
|
group :development, :test do
|
47
|
-
# See https://
|
48
|
-
gem "debug",
|
43
|
+
# See https://guides.rubyonrails.org/debugging_rails_applications.html#debugging-with-the-debug-gem
|
44
|
+
gem "debug", platforms: %i[ mri mingw x64_mingw ]
|
49
45
|
end
|
50
46
|
<% end -%>
|
51
47
|
|
52
48
|
group :development do
|
53
49
|
<%- unless options.api? || options.skip_dev_gems? -%>
|
54
50
|
# Use console on exceptions pages [https://github.com/rails/web-console]
|
55
|
-
gem "web-console"
|
51
|
+
gem "web-console"
|
56
52
|
|
57
53
|
# Add speed badges [https://github.com/MiniProfiler/rack-mini-profiler]
|
58
|
-
# gem "rack-mini-profiler"
|
54
|
+
# gem "rack-mini-profiler"
|
59
55
|
|
60
56
|
<%- end -%>
|
61
57
|
# Speed up commands on slow machines / big apps [https://github.com/rails/spring]
|
@@ -65,8 +61,8 @@ end
|
|
65
61
|
<%- if depends_on_system_test? -%>
|
66
62
|
group :test do
|
67
63
|
# Use system testing [https://guides.rubyonrails.org/testing.html#system-testing]
|
68
|
-
gem "capybara"
|
69
|
-
gem "selenium-webdriver"
|
64
|
+
gem "capybara"
|
65
|
+
gem "selenium-webdriver"
|
70
66
|
gem "webdrivers"
|
71
67
|
end
|
72
68
|
<%- end -%>
|
@@ -104,35 +104,4 @@ Rails.application.configure do
|
|
104
104
|
# Do not dump schema after migrations.
|
105
105
|
config.active_record.dump_schema_after_migration = false
|
106
106
|
<%- end -%>
|
107
|
-
|
108
|
-
# Inserts middleware to perform automatic connection switching.
|
109
|
-
# The `database_selector` hash is used to pass options to the DatabaseSelector
|
110
|
-
# middleware. The `delay` is used to determine how long to wait after a write
|
111
|
-
# to send a subsequent read to the primary.
|
112
|
-
#
|
113
|
-
# The `database_resolver` class is used by the middleware to determine which
|
114
|
-
# database is appropriate to use based on the time delay.
|
115
|
-
#
|
116
|
-
# The `database_resolver_context` class is used by the middleware to set
|
117
|
-
# timestamps for the last write to the primary. The resolver uses the context
|
118
|
-
# class timestamps to determine how long to wait before reading from the
|
119
|
-
# replica.
|
120
|
-
#
|
121
|
-
# By default Rails will store a last write timestamp in the session. The
|
122
|
-
# DatabaseSelector middleware is designed as such you can define your own
|
123
|
-
# strategy for connection switching and pass that into the middleware through
|
124
|
-
# these configuration options.
|
125
|
-
# config.active_record.database_selector = { delay: 2.seconds }
|
126
|
-
# config.active_record.database_resolver = ActiveRecord::Middleware::DatabaseSelector::Resolver
|
127
|
-
# config.active_record.database_resolver_context = ActiveRecord::Middleware::DatabaseSelector::Resolver::Session
|
128
|
-
|
129
|
-
# Inserts middleware to perform automatic shard swapping. The `shard_selector` hash
|
130
|
-
# can be used to pass options to the `ShardSelector` middleware. The `lock` option is
|
131
|
-
# used to determine whether shard swapping should be prohibited for the request.
|
132
|
-
#
|
133
|
-
# The `shard_resolver` option is used by the middleware to determine which shard
|
134
|
-
# to switch to. The application must provide a mechanism for finding the shard name
|
135
|
-
# in a proc. See guides for an example.
|
136
|
-
# config.active_record.shard_selector = { lock: true }
|
137
|
-
# config.active_record.shard_resolver = ->(request) { Tenant.find_by!(host: request.host).shard }
|
138
107
|
end
|
data/lib/rails/generators/rails/app/templates/config/initializers/new_framework_defaults_7_0.rb.tt
CHANGED
@@ -9,10 +9,6 @@
|
|
9
9
|
# Read the Guide for Upgrading Ruby on Rails for more info on each option.
|
10
10
|
# https://guides.rubyonrails.org/upgrading_ruby_on_rails.html
|
11
11
|
|
12
|
-
# Raise an error when trying to use forgery protection without a working
|
13
|
-
# session.
|
14
|
-
# Rails.application.config.action_controller.silence_disabled_session_errors = false
|
15
|
-
|
16
12
|
# `button_to` view helper will render `<button>` element, regardless of whether
|
17
13
|
# or not the content is passed as the first argument or as a block.
|
18
14
|
# Rails.application.config.action_view.button_to_generates_button_tag = true
|
@@ -94,10 +94,6 @@ module Rails
|
|
94
94
|
def test
|
95
95
|
template "test/test_helper.rb"
|
96
96
|
template "test/%namespaced_name%_test.rb"
|
97
|
-
append_file "Rakefile", <<~EOF
|
98
|
-
#{rakefile_test_tasks}
|
99
|
-
task default: :test
|
100
|
-
EOF
|
101
97
|
|
102
98
|
if engine?
|
103
99
|
empty_directory_with_keep_file "test/fixtures/files"
|
@@ -235,6 +231,10 @@ module Rails
|
|
235
231
|
public_task :set_default_accessors!
|
236
232
|
public_task :create_root
|
237
233
|
|
234
|
+
def target_rails_prerelease
|
235
|
+
super("plugin new")
|
236
|
+
end
|
237
|
+
|
238
238
|
def create_root_files
|
239
239
|
build(:readme)
|
240
240
|
build(:rakefile)
|
@@ -398,6 +398,10 @@ module Rails
|
|
398
398
|
end
|
399
399
|
end
|
400
400
|
|
401
|
+
def rails_version_specifier(gem_version = Rails.gem_version)
|
402
|
+
[">= #{gem_version}"]
|
403
|
+
end
|
404
|
+
|
401
405
|
def valid_const?
|
402
406
|
if /-\d/.match?(original_name)
|
403
407
|
raise Error, "Invalid plugin name #{original_name}. Please give a name which does not contain a namespace starting with numeric characters."
|
@@ -418,18 +422,6 @@ module Rails
|
|
418
422
|
defined?(::PluginBuilder) ? ::PluginBuilder : Rails::PluginBuilder
|
419
423
|
end
|
420
424
|
|
421
|
-
def rakefile_test_tasks
|
422
|
-
<<-RUBY
|
423
|
-
require "rake/testtask"
|
424
|
-
|
425
|
-
Rake::TestTask.new(:test) do |t|
|
426
|
-
t.libs << "test"
|
427
|
-
t.pattern = "test/**/*_test.rb"
|
428
|
-
t.verbose = false
|
429
|
-
end
|
430
|
-
RUBY
|
431
|
-
end
|
432
|
-
|
433
425
|
def dummy_path(path = nil)
|
434
426
|
@dummy_path = path if path
|
435
427
|
@dummy_path || options[:dummy_path]
|
@@ -24,5 +24,5 @@ Gem::Specification.new do |spec|
|
|
24
24
|
Dir["{app,config,db,lib}/**/*", "MIT-LICENSE", "Rakefile", "README.md"]
|
25
25
|
end
|
26
26
|
|
27
|
-
<%= "# " if
|
27
|
+
<%= "# " if rails_prerelease? -%>spec.add_dependency "rails", "<%= Array(rails_version_specifier).join('", "') %>"
|
28
28
|
end
|
@@ -2,7 +2,7 @@ source "https://rubygems.org"
|
|
2
2
|
git_source(:github) { |repo| "https://github.com/#{repo}.git" }
|
3
3
|
|
4
4
|
<% if options[:skip_gemspec] -%>
|
5
|
-
<%= "# " if
|
5
|
+
<%= "# " if rails_prerelease? -%>gem "rails", "<%= Array(rails_version_specifier).join("', '") %>"
|
6
6
|
<% else -%>
|
7
7
|
# Specify your gem's dependencies in <%= name %>.gemspec.
|
8
8
|
gemspec
|
@@ -14,20 +14,11 @@ group :development do
|
|
14
14
|
end
|
15
15
|
<% end -%>
|
16
16
|
|
17
|
-
<% if
|
18
|
-
# Your gem is dependent on
|
17
|
+
<% if rails_prerelease? -%>
|
18
|
+
# Your gem is dependent on a prerelease version of Rails. Once you can lock this
|
19
19
|
# dependency down to a specific version, move it to your gemspec.
|
20
|
-
<%
|
21
|
-
|
22
|
-
<% if gem.comment -%>
|
23
|
-
|
24
|
-
# <%= gem.comment %>
|
25
|
-
<% end -%>
|
26
|
-
<%= gem.commented_out ? "# " : "" %>gem "<%= gem.name %>"<%= %(, "#{gem.version}") if gem.version -%>
|
27
|
-
<% if gem.options.any? -%>
|
28
|
-
, <%= gem.options.map { |k,v|
|
29
|
-
"#{k}: #{v.inspect}" }.join(", ") %>
|
30
|
-
<% end -%>
|
20
|
+
<% gemfile_entries.each do |gemfile_entry| -%>
|
21
|
+
<%= gemfile_entry %>
|
31
22
|
<% end -%>
|
32
23
|
|
33
24
|
<% end -%>
|
@@ -10,11 +10,6 @@ ActiveRecord::Migrator.migrations_paths << File.expand_path("../db/migrate", __d
|
|
10
10
|
<% end -%>
|
11
11
|
require "rails/test_help"
|
12
12
|
|
13
|
-
<% unless engine? -%>
|
14
|
-
require "rails/test_unit/reporter"
|
15
|
-
Rails::TestUnitReporter.executable = "bin/test"
|
16
|
-
<% end -%>
|
17
|
-
|
18
13
|
<% unless options[:skip_active_record] -%>
|
19
14
|
# Load fixtures from the engine
|
20
15
|
if ActiveSupport::TestCase.respond_to?(:fixture_path=)
|
@@ -11,7 +11,7 @@ class <%= controller_class_name %>ControllerTest < ActionDispatch::IntegrationTe
|
|
11
11
|
end
|
12
12
|
|
13
13
|
test "should get index" do
|
14
|
-
get <%= index_helper %>
|
14
|
+
get <%= index_helper(type: :url) %>
|
15
15
|
assert_response :success
|
16
16
|
end
|
17
17
|
|
@@ -22,10 +22,10 @@ class <%= controller_class_name %>ControllerTest < ActionDispatch::IntegrationTe
|
|
22
22
|
|
23
23
|
test "should create <%= singular_table_name %>" do
|
24
24
|
assert_difference("<%= class_name %>.count") do
|
25
|
-
post <%= index_helper
|
25
|
+
post <%= index_helper(type: :url) %>, params: { <%= "#{singular_table_name}: { #{attributes_string} }" %> }
|
26
26
|
end
|
27
27
|
|
28
|
-
assert_redirected_to <%=
|
28
|
+
assert_redirected_to <%= show_helper("#{class_name}.last") %>
|
29
29
|
end
|
30
30
|
|
31
31
|
test "should show <%= singular_table_name %>" do
|
@@ -40,7 +40,7 @@ class <%= controller_class_name %>ControllerTest < ActionDispatch::IntegrationTe
|
|
40
40
|
|
41
41
|
test "should update <%= singular_table_name %>" do
|
42
42
|
patch <%= show_helper %>, params: { <%= "#{singular_table_name}: { #{attributes_string} }" %> }
|
43
|
-
assert_redirected_to <%=
|
43
|
+
assert_redirected_to <%= show_helper %>
|
44
44
|
end
|
45
45
|
|
46
46
|
test "should destroy <%= singular_table_name %>" do
|
@@ -48,7 +48,7 @@ class <%= controller_class_name %>ControllerTest < ActionDispatch::IntegrationTe
|
|
48
48
|
delete <%= show_helper %>
|
49
49
|
end
|
50
50
|
|
51
|
-
assert_redirected_to <%= index_helper %>
|
51
|
+
assert_redirected_to <%= index_helper(type: :url) %>
|
52
52
|
end
|
53
53
|
end
|
54
54
|
<% end -%>
|
@@ -66,8 +66,8 @@ module Rails
|
|
66
66
|
# printed by the generator.
|
67
67
|
def run_generator(args = default_arguments, config = {})
|
68
68
|
capture(:stdout) do
|
69
|
-
args += ["--skip-bundle"] unless args.include? "--dev"
|
70
|
-
args |= ["--skip-bootsnap"] unless args.include?
|
69
|
+
args += ["--skip-bundle"] unless args.include?("--no-skip-bundle") || args.include?("--dev")
|
70
|
+
args |= ["--skip-bootsnap"] unless args.include?("--no-skip-bootsnap")
|
71
71
|
|
72
72
|
generator_class.start(args, config.reverse_merge(destination_root: destination_root))
|
73
73
|
end
|