railties 6.1.0 → 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 +121 -276
- data/MIT-LICENSE +1 -1
- data/RDOC_MAIN.rdoc +16 -16
- data/README.rdoc +1 -2
- data/lib/rails/all.rb +0 -1
- data/lib/rails/api/task.rb +1 -1
- data/lib/rails/app_updater.rb +3 -5
- data/lib/rails/application/bootstrap.rb +21 -5
- data/lib/rails/application/configuration.rb +79 -33
- data/lib/rails/application/default_middleware_stack.rb +7 -3
- data/lib/rails/application/finisher.rb +42 -85
- data/lib/rails/application/routes_reloader.rb +8 -0
- data/lib/rails/application.rb +32 -51
- data/lib/rails/application_controller.rb +2 -2
- data/lib/rails/autoloaders/inflector.rb +21 -0
- data/lib/rails/autoloaders.rb +12 -16
- data/lib/rails/code_statistics.rb +2 -2
- data/lib/rails/code_statistics_calculator.rb +10 -1
- data/lib/rails/command/base.rb +26 -12
- data/lib/rails/command/behavior.rb +1 -1
- data/lib/rails/command/environment_argument.rb +1 -1
- data/lib/rails/command.rb +11 -10
- data/lib/rails/commands/credentials/USAGE +4 -2
- data/lib/rails/commands/credentials/credentials_command/diffing.rb +26 -16
- data/lib/rails/commands/credentials/credentials_command.rb +8 -3
- data/lib/rails/commands/dbconsole/dbconsole_command.rb +10 -11
- data/lib/rails/commands/help/USAGE +3 -2
- data/lib/rails/commands/notes/notes_command.rb +2 -2
- data/lib/rails/commands/runner/runner_command.rb +3 -2
- data/lib/rails/commands/server/server_command.rb +2 -5
- data/lib/rails/configuration.rb +18 -23
- data/lib/rails/engine/configuration.rb +3 -3
- data/lib/rails/engine.rb +18 -24
- data/lib/rails/gem_version.rb +2 -2
- data/lib/rails/generators/actions/create_migration.rb +4 -4
- data/lib/rails/generators/actions.rb +35 -13
- data/lib/rails/generators/app_base.rb +140 -102
- data/lib/rails/generators/app_name.rb +1 -1
- data/lib/rails/generators/base.rb +9 -13
- data/lib/rails/generators/erb/scaffold/scaffold_generator.rb +2 -0
- data/lib/rails/generators/erb/scaffold/templates/_form.html.erb.tt +8 -8
- data/lib/rails/generators/erb/scaffold/templates/edit.html.erb.tt +8 -4
- data/lib/rails/generators/erb/scaffold/templates/index.html.erb.tt +11 -28
- data/lib/rails/generators/erb/scaffold/templates/new.html.erb.tt +7 -3
- data/lib/rails/generators/erb/scaffold/templates/partial.html.erb.tt +17 -0
- data/lib/rails/generators/erb/scaffold/templates/show.html.erb.tt +8 -17
- data/lib/rails/generators/erb.rb +1 -1
- data/lib/rails/generators/generated_attribute.rb +45 -9
- data/lib/rails/generators/migration.rb +2 -6
- data/lib/rails/generators/model_helpers.rb +1 -1
- data/lib/rails/generators/named_base.rb +11 -11
- data/lib/rails/generators/rails/app/app_generator.rb +54 -93
- data/lib/rails/generators/rails/app/templates/Gemfile.tt +42 -52
- data/lib/rails/generators/rails/app/templates/app/assets/stylesheets/application.css.tt +2 -2
- data/lib/rails/generators/rails/app/templates/app/mailers/application_mailer.rb.tt +2 -2
- data/lib/rails/generators/rails/app/templates/app/models/application_record.rb.tt +1 -1
- data/lib/rails/generators/rails/app/templates/app/views/layouts/application.html.erb.tt +3 -9
- data/lib/rails/generators/rails/app/templates/bin/rails.tt +1 -4
- data/lib/rails/generators/rails/app/templates/bin/rake.tt +0 -3
- data/lib/rails/generators/rails/app/templates/bin/setup.tt +9 -14
- data/lib/rails/generators/rails/app/templates/config/application.rb.tt +0 -1
- data/lib/rails/generators/rails/app/templates/config/boot.rb.tt +1 -1
- 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 +2 -2
- data/lib/rails/generators/rails/app/templates/config/databases/mysql.yml.tt +3 -3
- 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 +3 -3
- 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 +5 -5
- data/lib/rails/generators/rails/app/templates/config/environments/development.rb.tt +6 -12
- data/lib/rails/generators/rails/app/templates/config/environments/production.rb.tt +11 -38
- data/lib/rails/generators/rails/app/templates/config/environments/test.rb.tt +6 -11
- data/lib/rails/generators/rails/app/templates/config/initializers/assets.rb.tt +1 -5
- data/lib/rails/generators/rails/app/templates/config/initializers/content_security_policy.rb.tt +19 -25
- data/lib/rails/generators/rails/app/templates/config/initializers/cors.rb.tt +2 -2
- data/lib/rails/generators/rails/app/templates/config/initializers/inflections.rb.tt +4 -4
- data/lib/rails/generators/rails/app/templates/config/initializers/new_framework_defaults_7_0.rb.tt +117 -0
- data/lib/rails/generators/rails/app/templates/config/locales/en.yml +3 -3
- data/lib/rails/generators/rails/app/templates/config/puma.rb.tt +1 -1
- data/lib/rails/generators/rails/app/templates/config/routes.rb.tt +4 -1
- data/lib/rails/generators/rails/app/templates/config/storage.yml.tt +5 -5
- data/lib/rails/generators/rails/app/templates/db/seeds.rb.tt +2 -2
- data/lib/rails/generators/rails/app/templates/gitattributes.tt +0 -5
- data/lib/rails/generators/rails/app/templates/gitignore.tt +3 -1
- data/lib/rails/generators/rails/app/templates/test/test_helper.rb.tt +1 -1
- data/lib/rails/generators/rails/controller/controller_generator.rb +1 -2
- data/lib/rails/generators/rails/controller/templates/controller.rb.tt +0 -4
- data/lib/rails/generators/rails/db/system/change/change_generator.rb +1 -1
- data/lib/rails/generators/rails/generator/templates/%file_name%_generator.rb.tt +1 -1
- data/lib/rails/generators/rails/plugin/plugin_generator.rb +42 -24
- data/lib/rails/generators/rails/plugin/templates/%name%.gemspec.tt +7 -3
- data/lib/rails/generators/rails/plugin/templates/Gemfile.tt +11 -20
- data/lib/rails/generators/rails/plugin/templates/README.md.tt +1 -1
- data/lib/rails/generators/rails/plugin/templates/app/mailers/%namespaced_name%/application_mailer.rb.tt +2 -2
- data/lib/rails/generators/rails/plugin/templates/app/views/layouts/%namespaced_name%/application.html.erb.tt +0 -3
- data/lib/rails/generators/rails/plugin/templates/bin/rails.tt +4 -5
- data/lib/rails/generators/rails/plugin/templates/gitignore.tt +0 -5
- data/lib/rails/generators/rails/plugin/templates/lib/%namespaced_name%/engine.rb.tt +2 -2
- data/lib/rails/generators/rails/plugin/templates/lib/%namespaced_name%/version.rb.tt +1 -1
- data/lib/rails/generators/rails/plugin/templates/rails/boot.rb.tt +2 -2
- data/lib/rails/generators/rails/plugin/templates/test/test_helper.rb.tt +2 -7
- data/lib/rails/generators/rails/scaffold/scaffold_generator.rb +0 -19
- data/lib/rails/generators/rails/scaffold_controller/templates/api_controller.rb.tt +1 -5
- data/lib/rails/generators/rails/scaffold_controller/templates/controller.rb.tt +6 -10
- data/lib/rails/generators/resource_helpers.rb +2 -2
- data/lib/rails/generators/test_unit/generator/templates/generator_test.rb.tt +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 +3 -3
- data/lib/rails/generators/test_unit/scaffold/templates/api_functional_test.rb.tt +5 -5
- data/lib/rails/generators/test_unit/scaffold/templates/functional_test.rb.tt +7 -7
- data/lib/rails/generators/test_unit/scaffold/templates/system_test.rb.tt +9 -11
- data/lib/rails/generators/testing/behaviour.rb +3 -4
- data/lib/rails/generators.rb +9 -22
- data/lib/rails/info.rb +1 -1
- data/lib/rails/info_controller.rb +1 -3
- data/lib/rails/initializable.rb +1 -1
- data/lib/rails/mailers_controller.rb +2 -4
- data/lib/rails/rack/logger.rb +0 -1
- data/lib/rails/railtie/configuration.rb +1 -2
- data/lib/rails/railtie.rb +31 -14
- data/lib/rails/ruby_version_check.rb +3 -3
- data/lib/rails/secrets.rb +4 -1
- data/lib/rails/source_annotation_extractor.rb +1 -1
- data/lib/rails/tasks/framework.rake +2 -8
- data/lib/rails/tasks/statistics.rake +3 -1
- data/lib/rails/tasks/tmp.rake +8 -1
- data/lib/rails/tasks/yarn.rake +10 -7
- data/lib/rails/tasks/zeitwerk.rake +2 -10
- data/lib/rails/templates/layouts/application.html.erb +15 -0
- data/lib/rails/templates/rails/mailers/email.html.erb +13 -11
- data/lib/rails/templates/rails/welcome/index.html.erb +62 -47
- data/lib/rails/test_unit/railtie.rb +0 -4
- data/lib/rails/test_unit/runner.rb +16 -9
- data/lib/rails/test_unit/testing.rake +4 -9
- data/lib/rails/welcome_controller.rb +1 -0
- data/lib/rails.rb +5 -0
- metadata +33 -36
- data/lib/rails/command/spellchecker.rb +0 -57
- data/lib/rails/generators/css/assets/assets_generator.rb +0 -15
- data/lib/rails/generators/css/assets/templates/stylesheet.css +0 -4
- data/lib/rails/generators/css/scaffold/scaffold_generator.rb +0 -18
- data/lib/rails/generators/rails/app/templates/app/javascript/channels/consumer.js +0 -6
- data/lib/rails/generators/rails/app/templates/app/javascript/channels/index.js +0 -5
- data/lib/rails/generators/rails/app/templates/app/javascript/packs/application.js.tt +0 -23
- data/lib/rails/generators/rails/app/templates/bin/spring.tt +0 -9
- data/lib/rails/generators/rails/app/templates/bin/yarn.tt +0 -18
- data/lib/rails/generators/rails/app/templates/config/initializers/application_controller_renderer.rb.tt +0 -8
- data/lib/rails/generators/rails/app/templates/config/initializers/backtrace_silencers.rb.tt +0 -8
- data/lib/rails/generators/rails/app/templates/config/initializers/cookies_serializer.rb.tt +0 -5
- data/lib/rails/generators/rails/app/templates/config/initializers/mime_types.rb.tt +0 -4
- data/lib/rails/generators/rails/app/templates/config/initializers/new_framework_defaults_6_1.rb.tt +0 -63
- data/lib/rails/generators/rails/app/templates/config/initializers/wrap_parameters.rb.tt +0 -16
- data/lib/rails/generators/rails/app/templates/config/spring.rb.tt +0 -6
- data/lib/rails/generators/rails/app/templates/package.json.tt +0 -11
- data/lib/rails/generators/rails/assets/USAGE +0 -16
- data/lib/rails/generators/rails/assets/assets_generator.rb +0 -26
- data/lib/rails/generators/rails/assets/templates/stylesheet.css +0 -4
- data/lib/rails/generators/rails/scaffold/templates/scaffold.css +0 -80
@@ -4,11 +4,11 @@
|
|
4
4
|
#
|
5
5
|
# To use the locales, use `I18n.t`:
|
6
6
|
#
|
7
|
-
# I18n.t
|
7
|
+
# I18n.t "hello"
|
8
8
|
#
|
9
9
|
# In views, this is aliased to just `t`:
|
10
10
|
#
|
11
|
-
# <%= t(
|
11
|
+
# <%= t("hello") %>
|
12
12
|
#
|
13
13
|
# To use a different locale, set it with `I18n.locale`:
|
14
14
|
#
|
@@ -24,7 +24,7 @@
|
|
24
24
|
# Instead, surround them with single quotes.
|
25
25
|
#
|
26
26
|
# en:
|
27
|
-
#
|
27
|
+
# "true": "foo"
|
28
28
|
#
|
29
29
|
# To learn more, please read the Rails Internationalization guide
|
30
30
|
# available at https://guides.rubyonrails.org/i18n.html.
|
@@ -1,3 +1,6 @@
|
|
1
1
|
Rails.application.routes.draw do
|
2
|
-
#
|
2
|
+
# Define your application routes per the DSL in https://guides.rubyonrails.org/routing.html
|
3
|
+
|
4
|
+
# Defines the root path route ("/")
|
5
|
+
# root "articles#index"
|
3
6
|
end
|
@@ -6,27 +6,27 @@ local:
|
|
6
6
|
service: Disk
|
7
7
|
root: <%%= Rails.root.join("storage") %>
|
8
8
|
|
9
|
-
# Use rails credentials:edit to set the AWS secrets (as aws:access_key_id|secret_access_key)
|
9
|
+
# Use bin/rails credentials:edit to set the AWS secrets (as aws:access_key_id|secret_access_key)
|
10
10
|
# amazon:
|
11
11
|
# service: S3
|
12
12
|
# access_key_id: <%%= Rails.application.credentials.dig(:aws, :access_key_id) %>
|
13
13
|
# secret_access_key: <%%= Rails.application.credentials.dig(:aws, :secret_access_key) %>
|
14
14
|
# region: us-east-1
|
15
|
-
# bucket: your_own_bucket
|
15
|
+
# bucket: your_own_bucket-<%%= Rails.env %>
|
16
16
|
|
17
17
|
# Remember not to checkin your GCS keyfile to a repository
|
18
18
|
# google:
|
19
19
|
# service: GCS
|
20
20
|
# project: your_project
|
21
21
|
# credentials: <%%= Rails.root.join("path/to/gcs.keyfile") %>
|
22
|
-
# bucket: your_own_bucket
|
22
|
+
# bucket: your_own_bucket-<%%= Rails.env %>
|
23
23
|
|
24
|
-
# Use rails credentials:edit to set the Azure Storage secret (as azure_storage:storage_access_key)
|
24
|
+
# Use bin/rails credentials:edit to set the Azure Storage secret (as azure_storage:storage_access_key)
|
25
25
|
# microsoft:
|
26
26
|
# service: AzureStorage
|
27
27
|
# storage_account_name: your_account_name
|
28
28
|
# storage_access_key: <%%= Rails.application.credentials.dig(:azure_storage, :storage_access_key) %>
|
29
|
-
# container: your_container_name
|
29
|
+
# container: your_container_name-<%%= Rails.env %>
|
30
30
|
|
31
31
|
# mirror:
|
32
32
|
# service: Mirror
|
@@ -3,5 +3,5 @@
|
|
3
3
|
#
|
4
4
|
# Examples:
|
5
5
|
#
|
6
|
-
# movies = Movie.create([{ name:
|
7
|
-
# Character.create(name:
|
6
|
+
# movies = Movie.create([{ name: "Star Wars" }, { name: "Lord of the Rings" }])
|
7
|
+
# Character.create(name: "Luke", movie: movies.first)
|
@@ -5,10 +5,5 @@
|
|
5
5
|
db/schema.rb linguist-generated
|
6
6
|
<% end -%>
|
7
7
|
|
8
|
-
<% unless options[:skip_javascript] -%>
|
9
|
-
# Mark the yarn lockfile as having been generated.
|
10
|
-
yarn.lock linguist-generated
|
11
|
-
<% end -%>
|
12
|
-
|
13
8
|
# Mark any vendored files as having been vendored.
|
14
9
|
vendor/* linguist-vendored
|
@@ -6,7 +6,6 @@ module Rails
|
|
6
6
|
argument :actions, type: :array, default: [], banner: "action action"
|
7
7
|
class_option :skip_routes, type: :boolean, desc: "Don't add routes to config/routes.rb."
|
8
8
|
class_option :helper, type: :boolean
|
9
|
-
class_option :assets, type: :boolean
|
10
9
|
|
11
10
|
check_class_collision suffix: "Controller"
|
12
11
|
|
@@ -21,7 +20,7 @@ module Rails
|
|
21
20
|
route routing_code, namespace: regular_class_path
|
22
21
|
end
|
23
22
|
|
24
|
-
hook_for :template_engine, :test_framework, :helper
|
23
|
+
hook_for :template_engine, :test_framework, :helper do |generator|
|
25
24
|
invoke generator, [ remove_possible_suffix(name), actions ]
|
26
25
|
end
|
27
26
|
|
@@ -26,11 +26,15 @@ module Rails
|
|
26
26
|
empty_directory_with_keep_file "app/assets/images/#{namespaced_name}"
|
27
27
|
end
|
28
28
|
|
29
|
+
empty_directory_with_keep_file "app/models/concerns"
|
30
|
+
empty_directory_with_keep_file "app/controllers/concerns"
|
29
31
|
remove_dir "app/mailers" if options[:skip_action_mailer]
|
30
32
|
remove_dir "app/jobs" if options[:skip_active_job]
|
31
33
|
elsif full?
|
32
34
|
empty_directory_with_keep_file "app/models"
|
33
35
|
empty_directory_with_keep_file "app/controllers"
|
36
|
+
empty_directory_with_keep_file "app/models/concerns"
|
37
|
+
empty_directory_with_keep_file "app/controllers/concerns"
|
34
38
|
empty_directory_with_keep_file "app/mailers" unless options[:skip_action_mailer]
|
35
39
|
empty_directory_with_keep_file "app/jobs" unless options[:skip_active_job]
|
36
40
|
|
@@ -51,7 +55,7 @@ module Rails
|
|
51
55
|
end
|
52
56
|
|
53
57
|
def license
|
54
|
-
template "MIT-LICENSE"
|
58
|
+
template "MIT-LICENSE" unless inside_application?
|
55
59
|
end
|
56
60
|
|
57
61
|
def gemspec
|
@@ -65,6 +69,9 @@ module Rails
|
|
65
69
|
def version_control
|
66
70
|
if !options[:skip_git] && !options[:pretend]
|
67
71
|
run "git init", capture: options[:quiet], abort_on_failure: false
|
72
|
+
if user_default_branch.strip.empty?
|
73
|
+
`git symbolic-ref HEAD refs/heads/main`
|
74
|
+
end
|
68
75
|
end
|
69
76
|
end
|
70
77
|
|
@@ -87,12 +94,18 @@ module Rails
|
|
87
94
|
def test
|
88
95
|
template "test/test_helper.rb"
|
89
96
|
template "test/%namespaced_name%_test.rb"
|
90
|
-
append_file "Rakefile", <<-EOF
|
91
97
|
|
92
|
-
#{rakefile_test_tasks}
|
93
|
-
task default: :test
|
94
|
-
EOF
|
95
98
|
if engine?
|
99
|
+
empty_directory_with_keep_file "test/fixtures/files"
|
100
|
+
empty_directory_with_keep_file "test/controllers"
|
101
|
+
empty_directory_with_keep_file "test/mailers"
|
102
|
+
empty_directory_with_keep_file "test/models"
|
103
|
+
empty_directory_with_keep_file "test/integration"
|
104
|
+
|
105
|
+
unless api?
|
106
|
+
empty_directory_with_keep_file "test/helpers"
|
107
|
+
end
|
108
|
+
|
96
109
|
template "test/integration/navigation_test.rb"
|
97
110
|
end
|
98
111
|
end
|
@@ -103,10 +116,8 @@ task default: :test
|
|
103
116
|
opts = options.transform_keys(&:to_sym).except(*DUMMY_IGNORE_OPTIONS)
|
104
117
|
opts[:force] = force
|
105
118
|
opts[:skip_bundle] = true
|
106
|
-
opts[:skip_listen] = true
|
107
119
|
opts[:skip_git] = true
|
108
|
-
opts[:
|
109
|
-
opts[:skip_webpack_install] = true
|
120
|
+
opts[:skip_hotwire] = true
|
110
121
|
opts[:dummy_app] = true
|
111
122
|
|
112
123
|
invoke Rails::Generators::AppGenerator,
|
@@ -123,10 +134,16 @@ task default: :test
|
|
123
134
|
if mountable?
|
124
135
|
template "rails/routes.rb", "#{dummy_path}/config/routes.rb", force: true
|
125
136
|
end
|
137
|
+
if engine? && !api?
|
138
|
+
insert_into_file "#{dummy_path}/config/application.rb", indent(<<~RUBY, 4), after: /^\s*config\.load_defaults.*\n/
|
139
|
+
|
140
|
+
# For compatibility with applications that use this config
|
141
|
+
config.action_controller.include_all_helpers = false
|
142
|
+
RUBY
|
143
|
+
end
|
126
144
|
end
|
127
145
|
|
128
|
-
def
|
129
|
-
template "rails/javascripts.js", "#{dummy_path}/app/javascript/packs/application.js", force: true
|
146
|
+
def test_dummy_sprocket_assets
|
130
147
|
template "rails/stylesheets.css", "#{dummy_path}/app/assets/stylesheets/application.css", force: true
|
131
148
|
template "rails/dummy_manifest.js", "#{dummy_path}/app/assets/config/manifest.js", force: true
|
132
149
|
end
|
@@ -174,6 +191,11 @@ task default: :test
|
|
174
191
|
append_file gemfile_in_app_path, entry
|
175
192
|
end
|
176
193
|
end
|
194
|
+
|
195
|
+
private
|
196
|
+
def user_default_branch
|
197
|
+
@user_default_branch ||= `git config init.defaultbranch`
|
198
|
+
end
|
177
199
|
end
|
178
200
|
|
179
201
|
module Generators
|
@@ -209,13 +231,17 @@ task default: :test
|
|
209
231
|
public_task :set_default_accessors!
|
210
232
|
public_task :create_root
|
211
233
|
|
234
|
+
def target_rails_prerelease
|
235
|
+
super("plugin new")
|
236
|
+
end
|
237
|
+
|
212
238
|
def create_root_files
|
213
239
|
build(:readme)
|
214
240
|
build(:rakefile)
|
215
241
|
build(:gemspec) unless options[:skip_gemspec]
|
216
242
|
build(:license)
|
217
243
|
build(:gitignore) unless options[:skip_git]
|
218
|
-
build(:gemfile)
|
244
|
+
build(:gemfile)
|
219
245
|
build(:version_control)
|
220
246
|
end
|
221
247
|
|
@@ -290,7 +316,7 @@ task default: :test
|
|
290
316
|
mute do
|
291
317
|
build(:generate_test_dummy)
|
292
318
|
build(:test_dummy_config)
|
293
|
-
build(:
|
319
|
+
build(:test_dummy_sprocket_assets) unless skip_sprockets?
|
294
320
|
build(:test_dummy_clean)
|
295
321
|
# ensure that bin/rails has proper dummy_path
|
296
322
|
build(:bin, true)
|
@@ -372,6 +398,10 @@ task default: :test
|
|
372
398
|
end
|
373
399
|
end
|
374
400
|
|
401
|
+
def rails_version_specifier(gem_version = Rails.gem_version)
|
402
|
+
[">= #{gem_version}"]
|
403
|
+
end
|
404
|
+
|
375
405
|
def valid_const?
|
376
406
|
if /-\d/.match?(original_name)
|
377
407
|
raise Error, "Invalid plugin name #{original_name}. Please give a name which does not contain a namespace starting with numeric characters."
|
@@ -392,18 +422,6 @@ task default: :test
|
|
392
422
|
defined?(::PluginBuilder) ? ::PluginBuilder : Rails::PluginBuilder
|
393
423
|
end
|
394
424
|
|
395
|
-
def rakefile_test_tasks
|
396
|
-
<<-RUBY
|
397
|
-
require "rake/testtask"
|
398
|
-
|
399
|
-
Rake::TestTask.new(:test) do |t|
|
400
|
-
t.libs << 'test'
|
401
|
-
t.pattern = 'test/**/*_test.rb'
|
402
|
-
t.verbose = false
|
403
|
-
end
|
404
|
-
RUBY
|
405
|
-
end
|
406
|
-
|
407
425
|
def dummy_path(path = nil)
|
408
426
|
@dummy_path = path if path
|
409
427
|
@dummy_path || options[:dummy_path]
|
@@ -8,9 +8,11 @@ Gem::Specification.new do |spec|
|
|
8
8
|
spec.homepage = "TODO"
|
9
9
|
spec.summary = "TODO: Summary of <%= camelized_modules %>."
|
10
10
|
spec.description = "TODO: Description of <%= camelized_modules %>."
|
11
|
+
<% unless inside_application? -%>
|
11
12
|
spec.license = "MIT"
|
13
|
+
<% end -%>
|
12
14
|
|
13
|
-
# Prevent pushing this gem to RubyGems.org. To allow pushes either set the
|
15
|
+
# Prevent pushing this gem to RubyGems.org. To allow pushes either set the "allowed_push_host"
|
14
16
|
# to allow pushing to a single host or delete this section to allow pushing to any host.
|
15
17
|
spec.metadata["allowed_push_host"] = "TODO: Set to 'http://mygemserver.com'"
|
16
18
|
|
@@ -18,7 +20,9 @@ Gem::Specification.new do |spec|
|
|
18
20
|
spec.metadata["source_code_uri"] = "TODO: Put your gem's public repo URL here."
|
19
21
|
spec.metadata["changelog_uri"] = "TODO: Put your gem's CHANGELOG.md URL here."
|
20
22
|
|
21
|
-
spec.files = Dir
|
23
|
+
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
24
|
+
Dir["{app,config,db,lib}/**/*", "MIT-LICENSE", "Rakefile", "README.md"]
|
25
|
+
end
|
22
26
|
|
23
|
-
<%=
|
27
|
+
<%= "# " if rails_prerelease? -%>spec.add_dependency "rails", "<%= Array(rails_version_specifier).join('", "') %>"
|
24
28
|
end
|
@@ -1,8 +1,8 @@
|
|
1
|
-
source
|
1
|
+
source "https://rubygems.org"
|
2
2
|
git_source(:github) { |repo| "https://github.com/#{repo}.git" }
|
3
3
|
|
4
4
|
<% if options[:skip_gemspec] -%>
|
5
|
-
<%=
|
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
|
@@ -10,32 +10,23 @@ gemspec
|
|
10
10
|
<% unless options[:skip_active_record] -%>
|
11
11
|
|
12
12
|
group :development do
|
13
|
-
gem
|
13
|
+
gem "<%= gem_for_database[0] %>"
|
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 -%>
|
34
|
-
<% if RUBY_ENGINE ==
|
35
|
-
#
|
36
|
-
# gem
|
25
|
+
<% if RUBY_ENGINE == "ruby" -%>
|
26
|
+
# Start debugger with binding.b -- Read more: https://github.com/ruby/debug
|
27
|
+
# gem "debug", ">= 1.0.0", group: %i[ development test ]
|
37
28
|
<% end -%>
|
38
29
|
<% if RUBY_PLATFORM.match(/bccwin|cygwin|emx|mingw|mswin|wince|java/) -%>
|
39
30
|
|
40
|
-
gem
|
31
|
+
gem "tzinfo-data", platforms: %i[ mingw mswin x64_mingw jruby]
|
41
32
|
<% end -%>
|
@@ -1,14 +1,14 @@
|
|
1
1
|
# This command will automatically be run when you run "rails" with Rails gems
|
2
2
|
# installed from the root of your application.
|
3
3
|
|
4
|
-
ENGINE_ROOT = File.expand_path(
|
5
|
-
ENGINE_PATH = File.expand_path(
|
4
|
+
ENGINE_ROOT = File.expand_path("..", __dir__)
|
5
|
+
ENGINE_PATH = File.expand_path("../lib/<%= namespaced_name -%>/engine", __dir__)
|
6
6
|
<% if with_dummy_app? -%>
|
7
|
-
APP_PATH = File.expand_path(
|
7
|
+
APP_PATH = File.expand_path("../<%= dummy_path -%>/config/application", __dir__)
|
8
8
|
<% end -%>
|
9
9
|
|
10
10
|
# Set up gems listed in the Gemfile.
|
11
|
-
ENV[
|
11
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__)
|
12
12
|
require "bundler/setup" if File.exist?(ENV["BUNDLE_GEMFILE"])
|
13
13
|
|
14
14
|
<% if include_all_railties? -%>
|
@@ -24,7 +24,6 @@ require "action_controller/railtie"
|
|
24
24
|
<%= comment_if :skip_action_mailer %>require "action_mailer/railtie"
|
25
25
|
require "action_view/railtie"
|
26
26
|
<%= comment_if :skip_action_cable %>require "action_cable/engine"
|
27
|
-
<%= comment_if :skip_sprockets %>require "sprockets/railtie"
|
28
27
|
<%= comment_if :skip_test %>require "rails/test_unit/railtie"
|
29
28
|
<% end -%>
|
30
29
|
require "rails/engine/commands"
|
@@ -9,13 +9,8 @@
|
|
9
9
|
/<%= dummy_path %>/db/*.sqlite3-*
|
10
10
|
<% end -%>
|
11
11
|
/<%= dummy_path %>/log/*.log
|
12
|
-
<% unless options[:skip_javascript] -%>
|
13
|
-
/<%= dummy_path %>/node_modules/
|
14
|
-
/<%= dummy_path %>/yarn-error.log
|
15
|
-
<% end -%>
|
16
12
|
<% unless skip_active_storage? -%>
|
17
13
|
/<%= dummy_path %>/storage/
|
18
14
|
<% end -%>
|
19
15
|
/<%= dummy_path %>/tmp/
|
20
16
|
<% end -%>
|
21
|
-
.byebug_history
|
@@ -1,7 +1,7 @@
|
|
1
1
|
<%= wrap_in_modules <<~rb
|
2
2
|
class Engine < ::Rails::Engine
|
3
|
-
#{mountable? ?
|
4
|
-
#{api? ? " config.generators.api_only = true" :
|
3
|
+
#{mountable? ? " isolate_namespace " + camelized_modules : " "}
|
4
|
+
#{api? ? " config.generators.api_only = true" : " "}
|
5
5
|
end
|
6
6
|
rb
|
7
7
|
%>
|
@@ -1 +1 @@
|
|
1
|
-
<%= wrap_in_modules
|
1
|
+
<%= wrap_in_modules 'VERSION = "0.1.0"' %>
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# Set up gems listed in the Gemfile.
|
2
|
-
ENV[
|
2
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../../Gemfile", __dir__)
|
3
3
|
|
4
4
|
require "bundler/setup" if File.exist?(ENV["BUNDLE_GEMFILE"])
|
5
|
-
$LOAD_PATH.unshift File.expand_path(
|
5
|
+
$LOAD_PATH.unshift File.expand_path("../../../lib", __dir__)
|
@@ -1,20 +1,15 @@
|
|
1
1
|
# Configure Rails Environment
|
2
2
|
ENV["RAILS_ENV"] = "test"
|
3
3
|
|
4
|
-
require_relative "<%= File.join(
|
4
|
+
require_relative "<%= File.join("..", options[:dummy_path], "config/environment") -%>"
|
5
5
|
<% unless options[:skip_active_record] -%>
|
6
6
|
ActiveRecord::Migrator.migrations_paths = [File.expand_path("../<%= options[:dummy_path] -%>/db/migrate", __dir__)]
|
7
7
|
<% if options[:mountable] -%>
|
8
|
-
ActiveRecord::Migrator.migrations_paths << File.expand_path(
|
8
|
+
ActiveRecord::Migrator.migrations_paths << File.expand_path("../db/migrate", __dir__)
|
9
9
|
<% end -%>
|
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=)
|
@@ -9,28 +9,9 @@ module Rails
|
|
9
9
|
remove_class_option :actions
|
10
10
|
|
11
11
|
class_option :api, type: :boolean
|
12
|
-
class_option :stylesheets, type: :boolean, desc: "Generate Stylesheets"
|
13
|
-
class_option :stylesheet_engine, desc: "Engine for Stylesheets"
|
14
|
-
class_option :assets, type: :boolean
|
15
12
|
class_option :resource_route, type: :boolean
|
16
|
-
class_option :scaffold_stylesheet, type: :boolean
|
17
|
-
|
18
|
-
def handle_skip
|
19
|
-
@options = @options.merge(stylesheets: false) unless options[:assets]
|
20
|
-
@options = @options.merge(stylesheet_engine: false) unless options[:stylesheets] && options[:scaffold_stylesheet]
|
21
|
-
end
|
22
13
|
|
23
14
|
hook_for :scaffold_controller, required: true
|
24
|
-
|
25
|
-
hook_for :assets do |assets|
|
26
|
-
invoke assets, [controller_name]
|
27
|
-
end
|
28
|
-
|
29
|
-
hook_for :stylesheet_engine do |stylesheet_engine|
|
30
|
-
if behavior == :invoke
|
31
|
-
invoke stylesheet_engine, [controller_name]
|
32
|
-
end
|
33
|
-
end
|
34
15
|
end
|
35
16
|
end
|
36
17
|
end
|
@@ -1,10 +1,6 @@
|
|
1
|
-
<% if namespaced? -%>
|
2
|
-
require_dependency "<%= namespaced_path %>/application_controller"
|
3
|
-
|
4
|
-
<% end -%>
|
5
1
|
<% module_namespacing do -%>
|
6
2
|
class <%= controller_class_name %>Controller < ApplicationController
|
7
|
-
before_action :set_<%= singular_table_name %>, only: [
|
3
|
+
before_action :set_<%= singular_table_name %>, only: %i[ show update destroy ]
|
8
4
|
|
9
5
|
# GET <%= route_url %>
|
10
6
|
def index
|
@@ -1,10 +1,6 @@
|
|
1
|
-
<% if namespaced? -%>
|
2
|
-
require_dependency "<%= namespaced_path %>/application_controller"
|
3
|
-
|
4
|
-
<% end -%>
|
5
1
|
<% module_namespacing do -%>
|
6
2
|
class <%= controller_class_name %>Controller < ApplicationController
|
7
|
-
before_action :set_<%= singular_table_name %>, only: [
|
3
|
+
before_action :set_<%= singular_table_name %>, only: %i[ show edit update destroy ]
|
8
4
|
|
9
5
|
# GET <%= route_url %>
|
10
6
|
def index
|
@@ -29,25 +25,25 @@ class <%= controller_class_name %>Controller < ApplicationController
|
|
29
25
|
@<%= singular_table_name %> = <%= orm_class.build(class_name, "#{singular_table_name}_params") %>
|
30
26
|
|
31
27
|
if @<%= orm_instance.save %>
|
32
|
-
redirect_to <%= redirect_resource_name %>, notice: <%= "
|
28
|
+
redirect_to <%= redirect_resource_name %>, notice: <%= %("#{human_name} was successfully created.") %>
|
33
29
|
else
|
34
|
-
render :new
|
30
|
+
render :new, status: :unprocessable_entity
|
35
31
|
end
|
36
32
|
end
|
37
33
|
|
38
34
|
# PATCH/PUT <%= route_url %>/1
|
39
35
|
def update
|
40
36
|
if @<%= orm_instance.update("#{singular_table_name}_params") %>
|
41
|
-
redirect_to <%= redirect_resource_name %>, notice: <%= "
|
37
|
+
redirect_to <%= redirect_resource_name %>, notice: <%= %("#{human_name} was successfully updated.") %>
|
42
38
|
else
|
43
|
-
render :edit
|
39
|
+
render :edit, status: :unprocessable_entity
|
44
40
|
end
|
45
41
|
end
|
46
42
|
|
47
43
|
# DELETE <%= route_url %>/1
|
48
44
|
def destroy
|
49
45
|
@<%= orm_instance.destroy %>
|
50
|
-
redirect_to <%= index_helper %>_url, notice: <%= "
|
46
|
+
redirect_to <%= index_helper %>_url, notice: <%= %("#{human_name} was successfully destroyed.") %>
|
51
47
|
end
|
52
48
|
|
53
49
|
private
|
@@ -8,13 +8,13 @@ module Rails
|
|
8
8
|
# Deal with controller names on scaffold and add some helpers to deal with
|
9
9
|
# ActiveModel.
|
10
10
|
module ResourceHelpers # :nodoc:
|
11
|
-
def self.included(base)
|
11
|
+
def self.included(base) # :nodoc:
|
12
12
|
base.include(Rails::Generators::ModelHelpers)
|
13
13
|
base.class_option :model_name, type: :string, desc: "ModelName to be used"
|
14
14
|
end
|
15
15
|
|
16
16
|
# Set controller variables on initialization.
|
17
|
-
def initialize(*args)
|
17
|
+
def initialize(*args) # :nodoc:
|
18
18
|
super
|
19
19
|
controller_name = name
|
20
20
|
if options[:model_name]
|
@@ -4,7 +4,7 @@ require "<%= generator_path %>"
|
|
4
4
|
<% module_namespacing do -%>
|
5
5
|
class <%= class_name %>GeneratorTest < Rails::Generators::TestCase
|
6
6
|
tests <%= class_name %>Generator
|
7
|
-
destination Rails.root.join(
|
7
|
+
destination Rails.root.join("tmp/generators")
|
8
8
|
setup :prepare_destination
|
9
9
|
|
10
10
|
# test "generator runs without errors" do
|
@@ -4,7 +4,7 @@
|
|
4
4
|
<%= name %>:
|
5
5
|
<% attributes.each do |attribute| -%>
|
6
6
|
<%- if attribute.password_digest? -%>
|
7
|
-
password_digest: <%%= BCrypt::Password.create(
|
7
|
+
password_digest: <%%= BCrypt::Password.create("secret") %>
|
8
8
|
<%- elsif attribute.reference? -%>
|
9
9
|
<%= yaml_key_value(attribute.column_name.delete_suffix("_id"), attribute.default || name) %>
|
10
10
|
<%- elsif !attribute.virtual? -%>
|
@@ -18,7 +18,7 @@
|
|
18
18
|
<% else -%>
|
19
19
|
|
20
20
|
# This model initially had no columns defined. If you add columns to the
|
21
|
-
# model remove the
|
21
|
+
# model remove the "{}" from the fixture names and add the columns immediately
|
22
22
|
# below each fixture, per the syntax in the comments below
|
23
23
|
#
|
24
24
|
one: {}
|