suspenders 1.45.0 → 1.46.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 +5 -5
- data/.ruby-version +1 -1
- data/.travis.yml +2 -1
- data/CONTRIBUTING.md +8 -0
- data/NEWS.md +20 -0
- data/README.md +1 -1
- data/lib/suspenders.rb +16 -7
- data/lib/suspenders/actions.rb +1 -9
- data/lib/suspenders/app_builder.rb +2 -120
- data/lib/suspenders/generators/analytics_generator.rb +29 -0
- data/lib/suspenders/generators/app_generator.rb +12 -41
- data/lib/suspenders/generators/ci_generator.rb +26 -0
- data/lib/suspenders/generators/db_optimizations_generator.rb +29 -0
- data/lib/suspenders/generators/factories_generator.rb +26 -0
- data/lib/suspenders/generators/forms_generator.rb +18 -0
- data/lib/suspenders/generators/jobs_generator.rb +47 -0
- data/lib/suspenders/generators/js_driver_generator.rb +18 -0
- data/lib/suspenders/generators/lint_generator.rb +14 -0
- data/lib/suspenders/generators/stylesheet_base_generator.rb +1 -1
- data/lib/suspenders/generators/testing_generator.rb +60 -0
- data/lib/suspenders/generators/views_generator.rb +35 -0
- data/lib/suspenders/version.rb +2 -2
- data/spec/features/new_project_spec.rb +9 -1
- data/spec/support/suspenders.rb +17 -4
- data/suspenders.gemspec +1 -1
- data/templates/Gemfile.erb +1 -10
- data/templates/_javascript.html.erb +0 -2
- data/templates/circle.yml.erb +1 -1
- data/templates/dev.rake +2 -2
- data/templates/factories.rb +1 -1
- data/templates/factory_bot_rspec.rb +3 -0
- data/templates/rails_helper.rb +1 -1
- data/templates/spec_helper.rb +0 -5
- metadata +18 -24
- data/lib/suspenders/generators/initialize_active_job_generator.rb +0 -19
- data/templates/database_cleaner_rspec.rb +0 -21
- data/templates/factory_girl_rspec.rb +0 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 5e456d8de3863b0f24364c29696229e699488cbe187aca31ee6abde4ed512e5a
|
|
4
|
+
data.tar.gz: d06e8ae58fff1ab88ec50db76194af8da542ff9485eb73af0014f1e7bf87efc1
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: b4a3ab9fdf134a6d2504c2c9110471df7252c545da046897c91504333f4c0dff88b486bda56f554d6cd8cec66ab2fdca732434afe51dc1952c211bc9b564db57
|
|
7
|
+
data.tar.gz: 46cdb956f84eb6fed1fcbd9e095974d4ffac51a65093debe0a73d80bee19e7d441bc7cd815a75c942d325c7c06d9c975b4efc0dbf7e03ab29ac64c012dc4e03a
|
data/.ruby-version
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
2.
|
|
1
|
+
2.5.0
|
data/.travis.yml
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
language: ruby
|
|
2
|
-
rvm: 2.
|
|
2
|
+
rvm: 2.5.0
|
|
3
3
|
cache: bundler
|
|
4
4
|
sudo: false
|
|
5
5
|
before_install:
|
|
6
6
|
- "echo '--colour' > ~/.rspec"
|
|
7
7
|
- git config --global user.name 'Travis CI'
|
|
8
8
|
- git config --global user.email 'travis-ci@example.com'
|
|
9
|
+
- gem update --system
|
|
9
10
|
install: bundle install
|
|
10
11
|
notifications:
|
|
11
12
|
email: false
|
data/CONTRIBUTING.md
CHANGED
|
@@ -52,3 +52,11 @@ We may suggest changes.
|
|
|
52
52
|
|
|
53
53
|
To update the Ruby version,
|
|
54
54
|
change `.ruby-version` and `.travis.yml`.
|
|
55
|
+
|
|
56
|
+
If you see this error while running tests:
|
|
57
|
+
|
|
58
|
+
```
|
|
59
|
+
Your Ruby version is XXX, but your Gemfile specified YYY (Bundler::RubyVersionMismatch)
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Try removing the `tmp/` directory and re-running the tests.
|
data/NEWS.md
CHANGED
|
@@ -1,3 +1,23 @@
|
|
|
1
|
+
1.46.0 (January 26, 2018)
|
|
2
|
+
|
|
3
|
+
* Bug fix: Fix for action mailer asset_host
|
|
4
|
+
* Bug fix: Lock pg to ~> 0.18
|
|
5
|
+
* Breaking: Remove Database Cleaner
|
|
6
|
+
* Upgrade: Update to Rails 5.1.4
|
|
7
|
+
* Upgrade: Update to Ruby 2.5.0
|
|
8
|
+
* Upgrade: Update bourbon from 5.0.0.beta.8 to 5.0.0
|
|
9
|
+
* Upgrade: Update FactoryGirl to FactoryBot
|
|
10
|
+
* Generators: Analytics generator
|
|
11
|
+
* Generators: CI generator
|
|
12
|
+
* Generators: DB optimization generator
|
|
13
|
+
* Generators: Factories generator
|
|
14
|
+
* Generators: Forms generator
|
|
15
|
+
* Generators: Javascript driver generator
|
|
16
|
+
* Generators: Jobs generator
|
|
17
|
+
* Generators: Lint generator
|
|
18
|
+
* Generators: Testing driver generator
|
|
19
|
+
* Generators: Views generator
|
|
20
|
+
|
|
1
21
|
1.45.0 (September 8, 2017)
|
|
2
22
|
|
|
3
23
|
* Bump Rails to 5.1.3 (#857)
|
data/README.md
CHANGED
|
@@ -80,7 +80,7 @@ And testing gems like:
|
|
|
80
80
|
* [Capybara](https://github.com/jnicklas/capybara) and
|
|
81
81
|
[Capybara WebKit](https://github.com/thoughtbot/capybara-webkit) for
|
|
82
82
|
integration testing
|
|
83
|
-
* [Factory
|
|
83
|
+
* [Factory Bot](https://github.com/thoughtbot/factory_bot) for test data
|
|
84
84
|
* [Formulaic](https://github.com/thoughtbot/formulaic) for integration testing
|
|
85
85
|
HTML forms
|
|
86
86
|
* [RSpec](https://github.com/rspec/rspec) for unit testing
|
data/lib/suspenders.rb
CHANGED
|
@@ -1,9 +1,18 @@
|
|
|
1
|
-
require
|
|
2
|
-
require
|
|
1
|
+
require "suspenders/version"
|
|
2
|
+
require "suspenders/generators/app_generator"
|
|
3
3
|
require "suspenders/generators/enforce_ssl_generator"
|
|
4
|
-
require "suspenders/generators/
|
|
5
|
-
require
|
|
6
|
-
require
|
|
7
|
-
require
|
|
4
|
+
require "suspenders/generators/static_generator"
|
|
5
|
+
require "suspenders/generators/stylesheet_base_generator"
|
|
6
|
+
require "suspenders/generators/forms_generator"
|
|
7
|
+
require "suspenders/generators/ci_generator"
|
|
8
|
+
require "suspenders/generators/db_optimizations_generator"
|
|
9
|
+
require "suspenders/generators/factories_generator"
|
|
10
|
+
require "suspenders/generators/lint_generator"
|
|
11
|
+
require "suspenders/generators/jobs_generator"
|
|
12
|
+
require "suspenders/generators/analytics_generator"
|
|
13
|
+
require "suspenders/generators/views_generator"
|
|
14
|
+
require "suspenders/generators/js_driver_generator"
|
|
15
|
+
require "suspenders/generators/testing_generator"
|
|
16
|
+
require "suspenders/actions"
|
|
8
17
|
require "suspenders/adapters/heroku"
|
|
9
|
-
require
|
|
18
|
+
require "suspenders/app_builder"
|
data/lib/suspenders/actions.rb
CHANGED
|
@@ -15,18 +15,10 @@ module Suspenders
|
|
|
15
15
|
end
|
|
16
16
|
|
|
17
17
|
def action_mailer_asset_host(rails_env, host)
|
|
18
|
-
config = "config.action_mailer.asset_host =
|
|
18
|
+
config = "config.action_mailer.asset_host = #{host}"
|
|
19
19
|
configure_environment(rails_env, config)
|
|
20
20
|
end
|
|
21
21
|
|
|
22
|
-
def configure_application_file(config)
|
|
23
|
-
inject_into_file(
|
|
24
|
-
"config/application.rb",
|
|
25
|
-
"\n\n #{config}",
|
|
26
|
-
before: "\n end"
|
|
27
|
-
)
|
|
28
|
-
end
|
|
29
|
-
|
|
30
22
|
def configure_environment(rails_env, config)
|
|
31
23
|
inject_into_file(
|
|
32
24
|
"config/environments/#{rails_env}.rb",
|
|
@@ -55,23 +55,6 @@ module Suspenders
|
|
|
55
55
|
)
|
|
56
56
|
end
|
|
57
57
|
|
|
58
|
-
def add_bullet_gem_configuration
|
|
59
|
-
config = <<-RUBY
|
|
60
|
-
config.after_initialize do
|
|
61
|
-
Bullet.enable = true
|
|
62
|
-
Bullet.bullet_logger = true
|
|
63
|
-
Bullet.rails_logger = true
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
RUBY
|
|
67
|
-
|
|
68
|
-
inject_into_file(
|
|
69
|
-
"config/environments/development.rb",
|
|
70
|
-
config,
|
|
71
|
-
after: "config.action_mailer.raise_delivery_errors = true\n",
|
|
72
|
-
)
|
|
73
|
-
end
|
|
74
|
-
|
|
75
58
|
def raise_on_unpermitted_parameters
|
|
76
59
|
config = <<-RUBY
|
|
77
60
|
config.action_controller.action_on_unpermitted_parameters = :raise
|
|
@@ -93,10 +76,6 @@ module Suspenders
|
|
|
93
76
|
run "chmod a+x bin/setup"
|
|
94
77
|
end
|
|
95
78
|
|
|
96
|
-
def provide_dev_prime_task
|
|
97
|
-
copy_file 'dev.rake', 'lib/tasks/dev.rake'
|
|
98
|
-
end
|
|
99
|
-
|
|
100
79
|
def configure_generators
|
|
101
80
|
config = <<-RUBY
|
|
102
81
|
|
|
@@ -115,18 +94,6 @@ module Suspenders
|
|
|
115
94
|
inject_into_class 'config/application.rb', 'Application', config
|
|
116
95
|
end
|
|
117
96
|
|
|
118
|
-
def set_up_factory_girl_for_rspec
|
|
119
|
-
copy_file 'factory_girl_rspec.rb', 'spec/support/factory_girl.rb'
|
|
120
|
-
end
|
|
121
|
-
|
|
122
|
-
def generate_factories_file
|
|
123
|
-
copy_file "factories.rb", "spec/factories.rb"
|
|
124
|
-
end
|
|
125
|
-
|
|
126
|
-
def set_up_hound
|
|
127
|
-
copy_file "hound.yml", ".hound.yml"
|
|
128
|
-
end
|
|
129
|
-
|
|
130
97
|
def configure_smtp
|
|
131
98
|
copy_file 'smtp.rb', 'config/smtp.rb'
|
|
132
99
|
|
|
@@ -186,32 +153,6 @@ config.public_file_server.headers = {
|
|
|
186
153
|
remove_file "config/initializers/wrap_parameters.rb"
|
|
187
154
|
end
|
|
188
155
|
|
|
189
|
-
def create_partials_directory
|
|
190
|
-
empty_directory 'app/views/application'
|
|
191
|
-
end
|
|
192
|
-
|
|
193
|
-
def create_shared_flashes
|
|
194
|
-
copy_file "_flashes.html.erb", "app/views/application/_flashes.html.erb"
|
|
195
|
-
copy_file "flashes_helper.rb", "app/helpers/flashes_helper.rb"
|
|
196
|
-
end
|
|
197
|
-
|
|
198
|
-
def create_shared_javascripts
|
|
199
|
-
copy_file '_javascript.html.erb', 'app/views/application/_javascript.html.erb'
|
|
200
|
-
end
|
|
201
|
-
|
|
202
|
-
def create_shared_css_overrides
|
|
203
|
-
copy_file(
|
|
204
|
-
"_css_overrides.html.erb",
|
|
205
|
-
"app/views/application/_css_overrides.html.erb",
|
|
206
|
-
)
|
|
207
|
-
end
|
|
208
|
-
|
|
209
|
-
def create_application_layout
|
|
210
|
-
template 'suspenders_layout.html.erb.erb',
|
|
211
|
-
'app/views/layouts/application.html.erb',
|
|
212
|
-
force: true
|
|
213
|
-
end
|
|
214
|
-
|
|
215
156
|
def use_postgres_config_template
|
|
216
157
|
template 'postgresql_database.yml.erb', 'config/database.yml',
|
|
217
158
|
force: true
|
|
@@ -235,54 +176,15 @@ config.public_file_server.headers = {
|
|
|
235
176
|
create_file '.ruby-version', "#{Suspenders::RUBY_VERSION}\n"
|
|
236
177
|
end
|
|
237
178
|
|
|
238
|
-
def enable_database_cleaner
|
|
239
|
-
copy_file 'database_cleaner_rspec.rb', 'spec/support/database_cleaner.rb'
|
|
240
|
-
end
|
|
241
|
-
|
|
242
|
-
def provide_shoulda_matchers_config
|
|
243
|
-
copy_file(
|
|
244
|
-
"shoulda_matchers_config_rspec.rb",
|
|
245
|
-
"spec/support/shoulda_matchers.rb"
|
|
246
|
-
)
|
|
247
|
-
end
|
|
248
|
-
|
|
249
|
-
def configure_spec_support_features
|
|
250
|
-
empty_directory_with_keep_file 'spec/features'
|
|
251
|
-
empty_directory_with_keep_file 'spec/support/features'
|
|
252
|
-
end
|
|
253
|
-
|
|
254
|
-
def configure_rspec
|
|
255
|
-
remove_file "spec/rails_helper.rb"
|
|
256
|
-
remove_file "spec/spec_helper.rb"
|
|
257
|
-
copy_file "rails_helper.rb", "spec/rails_helper.rb"
|
|
258
|
-
copy_file "spec_helper.rb", "spec/spec_helper.rb"
|
|
259
|
-
end
|
|
260
|
-
|
|
261
|
-
def configure_ci
|
|
262
|
-
template "circle.yml.erb", "circle.yml"
|
|
263
|
-
end
|
|
264
|
-
|
|
265
|
-
def configure_i18n_for_test_environment
|
|
266
|
-
copy_file "i18n.rb", "spec/support/i18n.rb"
|
|
267
|
-
end
|
|
268
|
-
|
|
269
179
|
def configure_i18n_for_missing_translations
|
|
270
180
|
raise_on_missing_translations_in("development")
|
|
271
181
|
raise_on_missing_translations_in("test")
|
|
272
182
|
end
|
|
273
183
|
|
|
274
|
-
def configure_background_jobs_for_rspec
|
|
275
|
-
run 'rails g delayed_job:active_record'
|
|
276
|
-
end
|
|
277
|
-
|
|
278
184
|
def configure_action_mailer_in_specs
|
|
279
185
|
copy_file 'action_mailer.rb', 'spec/support/action_mailer.rb'
|
|
280
186
|
end
|
|
281
187
|
|
|
282
|
-
def configure_capybara_webkit
|
|
283
|
-
copy_file "capybara_webkit.rb", "spec/support/capybara_webkit.rb"
|
|
284
|
-
end
|
|
285
|
-
|
|
286
188
|
def configure_time_formats
|
|
287
189
|
remove_file "config/locales/en.yml"
|
|
288
190
|
template "config_locales_en.yml.erb", "config/locales/en.yml"
|
|
@@ -296,15 +198,11 @@ Rack::Timeout.timeout = (ENV["RACK_TIMEOUT"] || 10).to_i
|
|
|
296
198
|
append_file "config/environments/production.rb", rack_timeout_config
|
|
297
199
|
end
|
|
298
200
|
|
|
299
|
-
def configure_simple_form
|
|
300
|
-
bundle_command "exec rails generate simple_form:install"
|
|
301
|
-
end
|
|
302
|
-
|
|
303
201
|
def configure_action_mailer
|
|
304
202
|
action_mailer_host "development", %{"localhost:3000"}
|
|
305
|
-
action_mailer_asset_host "development", %{"localhost:3000"}
|
|
203
|
+
action_mailer_asset_host "development", %{"http://localhost:3000"}
|
|
306
204
|
action_mailer_host "test", %{"www.example.com"}
|
|
307
|
-
action_mailer_asset_host "test", %{"www.example.com"}
|
|
205
|
+
action_mailer_asset_host "test", %{"http://www.example.com"}
|
|
308
206
|
action_mailer_host "production", %{ENV.fetch("APPLICATION_HOST")}
|
|
309
207
|
action_mailer_asset_host(
|
|
310
208
|
"production",
|
|
@@ -312,17 +210,6 @@ Rack::Timeout.timeout = (ENV["RACK_TIMEOUT"] || 10).to_i
|
|
|
312
210
|
)
|
|
313
211
|
end
|
|
314
212
|
|
|
315
|
-
def configure_active_job
|
|
316
|
-
configure_application_file(
|
|
317
|
-
"config.active_job.queue_adapter = :delayed_job"
|
|
318
|
-
)
|
|
319
|
-
configure_environment "test", "config.active_job.queue_adapter = :inline"
|
|
320
|
-
end
|
|
321
|
-
|
|
322
|
-
def generate_rspec
|
|
323
|
-
generate 'rspec:install'
|
|
324
|
-
end
|
|
325
|
-
|
|
326
213
|
def replace_default_puma_configuration
|
|
327
214
|
copy_file "puma.rb", "config/puma.rb", force: true
|
|
328
215
|
end
|
|
@@ -388,11 +275,6 @@ you can deploy to staging and production with:
|
|
|
388
275
|
run "hub create #{repo_name}"
|
|
389
276
|
end
|
|
390
277
|
|
|
391
|
-
def setup_segment
|
|
392
|
-
copy_file '_analytics.html.erb',
|
|
393
|
-
'app/views/application/_analytics.html.erb'
|
|
394
|
-
end
|
|
395
|
-
|
|
396
278
|
def setup_bundler_audit
|
|
397
279
|
copy_file "bundler_audit.rake", "lib/tasks/bundler_audit.rake"
|
|
398
280
|
append_file "Rakefile", %{\ntask default: "bundle:audit"\n}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
require "rails/generators"
|
|
2
|
+
|
|
3
|
+
module Suspenders
|
|
4
|
+
class AnalyticsGenerator < Rails::Generators::Base
|
|
5
|
+
source_root File.expand_path(
|
|
6
|
+
File.join("..", "..", "..", "templates"),
|
|
7
|
+
File.dirname(__FILE__),
|
|
8
|
+
)
|
|
9
|
+
|
|
10
|
+
def install_partial
|
|
11
|
+
copy_file "_analytics.html.erb",
|
|
12
|
+
"app/views/application/_analytics.html.erb"
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def render_partial
|
|
16
|
+
if File.exist?(js_partial)
|
|
17
|
+
inject_into_file js_partial,
|
|
18
|
+
%{\n\n<%= render "analytics" %>},
|
|
19
|
+
after: "<%= yield :javascript %>"
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
private
|
|
24
|
+
|
|
25
|
+
def js_partial
|
|
26
|
+
"app/views/application/_javascript.html.erb"
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -43,10 +43,8 @@ module Suspenders
|
|
|
43
43
|
def suspenders_customization
|
|
44
44
|
invoke :customize_gemfile
|
|
45
45
|
invoke :setup_development_environment
|
|
46
|
-
invoke :setup_test_environment
|
|
47
46
|
invoke :setup_production_environment
|
|
48
47
|
invoke :setup_secret_token
|
|
49
|
-
invoke :create_suspenders_views
|
|
50
48
|
invoke :configure_app
|
|
51
49
|
invoke :copy_miscellaneous_files
|
|
52
50
|
invoke :customize_error_pages
|
|
@@ -54,14 +52,13 @@ module Suspenders
|
|
|
54
52
|
invoke :remove_routes_comment_lines
|
|
55
53
|
invoke :setup_dotfiles
|
|
56
54
|
invoke :setup_database
|
|
57
|
-
invoke :create_local_heroku_setup
|
|
58
|
-
invoke :create_heroku_apps
|
|
59
55
|
invoke :create_github_repo
|
|
60
|
-
invoke :setup_segment
|
|
61
56
|
invoke :setup_bundler_audit
|
|
62
57
|
invoke :setup_spring
|
|
63
58
|
invoke :generate_default
|
|
64
59
|
invoke :setup_default_directories
|
|
60
|
+
invoke :create_local_heroku_setup
|
|
61
|
+
invoke :create_heroku_apps
|
|
65
62
|
invoke :outro
|
|
66
63
|
end
|
|
67
64
|
|
|
@@ -69,7 +66,6 @@ module Suspenders
|
|
|
69
66
|
build :replace_gemfile, options[:path]
|
|
70
67
|
build :set_ruby_to_version_being_used
|
|
71
68
|
bundle_command 'install'
|
|
72
|
-
build :configure_simple_form
|
|
73
69
|
end
|
|
74
70
|
|
|
75
71
|
def setup_database
|
|
@@ -87,32 +83,13 @@ module Suspenders
|
|
|
87
83
|
build :raise_on_missing_assets_in_test
|
|
88
84
|
build :raise_on_delivery_errors
|
|
89
85
|
build :set_test_delivery_method
|
|
90
|
-
build :add_bullet_gem_configuration
|
|
91
86
|
build :raise_on_unpermitted_parameters
|
|
92
87
|
build :provide_setup_script
|
|
93
|
-
build :provide_dev_prime_task
|
|
94
88
|
build :configure_generators
|
|
95
89
|
build :configure_i18n_for_missing_translations
|
|
96
90
|
build :configure_quiet_assets
|
|
97
91
|
end
|
|
98
92
|
|
|
99
|
-
def setup_test_environment
|
|
100
|
-
say 'Setting up the test environment'
|
|
101
|
-
build :set_up_factory_girl_for_rspec
|
|
102
|
-
build :generate_factories_file
|
|
103
|
-
build :set_up_hound
|
|
104
|
-
build :generate_rspec
|
|
105
|
-
build :configure_rspec
|
|
106
|
-
build :configure_background_jobs_for_rspec
|
|
107
|
-
build :enable_database_cleaner
|
|
108
|
-
build :provide_shoulda_matchers_config
|
|
109
|
-
build :configure_spec_support_features
|
|
110
|
-
build :configure_ci
|
|
111
|
-
build :configure_i18n_for_test_environment
|
|
112
|
-
build :configure_action_mailer_in_specs
|
|
113
|
-
build :configure_capybara_webkit
|
|
114
|
-
end
|
|
115
|
-
|
|
116
93
|
def setup_production_environment
|
|
117
94
|
say 'Setting up the production environment'
|
|
118
95
|
build :configure_smtp
|
|
@@ -127,19 +104,9 @@ module Suspenders
|
|
|
127
104
|
build :setup_secret_token
|
|
128
105
|
end
|
|
129
106
|
|
|
130
|
-
def create_suspenders_views
|
|
131
|
-
say 'Creating suspenders views'
|
|
132
|
-
build :create_partials_directory
|
|
133
|
-
build :create_shared_flashes
|
|
134
|
-
build :create_shared_javascripts
|
|
135
|
-
build :create_shared_css_overrides
|
|
136
|
-
build :create_application_layout
|
|
137
|
-
end
|
|
138
|
-
|
|
139
107
|
def configure_app
|
|
140
108
|
say 'Configuring app'
|
|
141
109
|
build :configure_action_mailer
|
|
142
|
-
build :configure_active_job
|
|
143
110
|
build :configure_time_formats
|
|
144
111
|
build :setup_default_rake_task
|
|
145
112
|
build :replace_default_puma_configuration
|
|
@@ -175,11 +142,6 @@ module Suspenders
|
|
|
175
142
|
end
|
|
176
143
|
end
|
|
177
144
|
|
|
178
|
-
def setup_segment
|
|
179
|
-
say 'Setting up Segment'
|
|
180
|
-
build :setup_segment
|
|
181
|
-
end
|
|
182
|
-
|
|
183
145
|
def setup_dotfiles
|
|
184
146
|
build :copy_dotfiles
|
|
185
147
|
end
|
|
@@ -218,10 +180,19 @@ module Suspenders
|
|
|
218
180
|
|
|
219
181
|
def generate_default
|
|
220
182
|
run("spring stop")
|
|
221
|
-
generate("suspenders:initialize_active_job")
|
|
222
183
|
generate("suspenders:enforce_ssl")
|
|
223
184
|
generate("suspenders:static")
|
|
224
185
|
generate("suspenders:stylesheet_base")
|
|
186
|
+
generate("suspenders:testing")
|
|
187
|
+
generate("suspenders:ci")
|
|
188
|
+
generate("suspenders:js_driver")
|
|
189
|
+
generate("suspenders:forms")
|
|
190
|
+
generate("suspenders:db_optimizations")
|
|
191
|
+
generate("suspenders:factories")
|
|
192
|
+
generate("suspenders:lint")
|
|
193
|
+
generate("suspenders:jobs")
|
|
194
|
+
generate("suspenders:analytics")
|
|
195
|
+
generate("suspenders:views")
|
|
225
196
|
end
|
|
226
197
|
|
|
227
198
|
def outro
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
require "rails/generators"
|
|
2
|
+
|
|
3
|
+
module Suspenders
|
|
4
|
+
class CiGenerator < Rails::Generators::Base
|
|
5
|
+
source_root File.expand_path(
|
|
6
|
+
File.join("..", "..", "..", "templates"),
|
|
7
|
+
File.dirname(__FILE__))
|
|
8
|
+
|
|
9
|
+
def simplecov_test_integration
|
|
10
|
+
inject_into_file "spec/spec_helper.rb", before: 'SimpleCov.start "rails"' do
|
|
11
|
+
<<-RUBY
|
|
12
|
+
|
|
13
|
+
if ENV["CIRCLE_ARTIFACTS"]
|
|
14
|
+
dir = File.join(ENV["CIRCLE_ARTIFACTS"], "coverage")
|
|
15
|
+
SimpleCov.coverage_dir(dir)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
RUBY
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def configure_ci
|
|
23
|
+
template "circle.yml.erb", "circle.yml"
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
require "rails/generators"
|
|
2
|
+
|
|
3
|
+
module Suspenders
|
|
4
|
+
class DbOptimizationsGenerator < Rails::Generators::Base
|
|
5
|
+
def add_bullet
|
|
6
|
+
gem "bullet", group: %i(development test)
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def configure_bullet
|
|
10
|
+
inject_into_file(
|
|
11
|
+
"config/environments/development.rb",
|
|
12
|
+
configuration,
|
|
13
|
+
after: "config.action_mailer.raise_delivery_errors = true\n",
|
|
14
|
+
)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
private
|
|
18
|
+
|
|
19
|
+
def configuration
|
|
20
|
+
<<-RUBY
|
|
21
|
+
config.after_initialize do
|
|
22
|
+
Bullet.enable = true
|
|
23
|
+
Bullet.bullet_logger = true
|
|
24
|
+
Bullet.rails_logger = true
|
|
25
|
+
end
|
|
26
|
+
RUBY
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
require "rails/generators"
|
|
2
|
+
|
|
3
|
+
module Suspenders
|
|
4
|
+
class FactoriesGenerator < Rails::Generators::Base
|
|
5
|
+
source_root File.expand_path(
|
|
6
|
+
File.join("..", "..", "..", "templates"),
|
|
7
|
+
File.dirname(__FILE__),
|
|
8
|
+
)
|
|
9
|
+
|
|
10
|
+
def add_factory_bot
|
|
11
|
+
gem "factory_bot_rails", group: %i(development test)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def set_up_factory_bot_for_rspec
|
|
15
|
+
copy_file "factory_bot_rspec.rb", "spec/support/factory_bot.rb"
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def generate_empty_factories_file
|
|
19
|
+
copy_file "factories.rb", "spec/factories.rb"
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def provide_dev_prime_task
|
|
23
|
+
copy_file "dev.rake", "lib/tasks/dev.rake"
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
require "rails/generators"
|
|
2
|
+
|
|
3
|
+
module Suspenders
|
|
4
|
+
class FormsGenerator < Rails::Generators::Base
|
|
5
|
+
def add_simple_form
|
|
6
|
+
gem "simple_form"
|
|
7
|
+
Bundler.with_clean_env { run "bundle install" }
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def configure_simple_form
|
|
11
|
+
create_file "config/initializers/simple_form.rb" do
|
|
12
|
+
"SimpleForm.setup {|config|}"
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
generate "simple_form:install", "--force"
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
require "rails/generators"
|
|
2
|
+
|
|
3
|
+
module Suspenders
|
|
4
|
+
class JobsGenerator < Rails::Generators::Base
|
|
5
|
+
include Suspenders::Actions
|
|
6
|
+
|
|
7
|
+
source_root(
|
|
8
|
+
File.expand_path(
|
|
9
|
+
File.join("..", "..", "..", "templates"),
|
|
10
|
+
File.dirname(__FILE__),
|
|
11
|
+
),
|
|
12
|
+
)
|
|
13
|
+
|
|
14
|
+
def add_jobs_gem
|
|
15
|
+
gem "delayed_job_active_record"
|
|
16
|
+
Bundler.with_clean_env { run "bundle install" }
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def configure_background_jobs_for_rspec
|
|
20
|
+
generate "delayed_job:active_record"
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def initialize_active_job
|
|
24
|
+
copy_file(
|
|
25
|
+
"active_job.rb",
|
|
26
|
+
"config/initializers/active_job.rb",
|
|
27
|
+
)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def configure_active_job
|
|
31
|
+
configure_application_file(
|
|
32
|
+
"config.active_job.queue_adapter = :delayed_job",
|
|
33
|
+
)
|
|
34
|
+
configure_environment "test", "config.active_job.queue_adapter = :inline"
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
private
|
|
38
|
+
|
|
39
|
+
def configure_application_file(config)
|
|
40
|
+
inject_into_file(
|
|
41
|
+
"config/application.rb",
|
|
42
|
+
"\n #{config}",
|
|
43
|
+
before: "\n end",
|
|
44
|
+
)
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
require "rails/generators"
|
|
2
|
+
|
|
3
|
+
module Suspenders
|
|
4
|
+
class JsDriverGenerator < Rails::Generators::Base
|
|
5
|
+
source_root File.expand_path(
|
|
6
|
+
File.join("..", "..", "..", "templates"),
|
|
7
|
+
File.dirname(__FILE__),
|
|
8
|
+
)
|
|
9
|
+
|
|
10
|
+
def add_gems
|
|
11
|
+
gem "capybara-webkit", group: :test
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def configure_capybara_webkit
|
|
15
|
+
copy_file "capybara_webkit.rb", "spec/support/capybara_webkit.rb"
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
require "rails/generators"
|
|
2
|
+
|
|
3
|
+
module Suspenders
|
|
4
|
+
class LintGenerator < Rails::Generators::Base
|
|
5
|
+
source_root File.expand_path(
|
|
6
|
+
File.join("..", "..", "..", "templates"),
|
|
7
|
+
File.dirname(__FILE__),
|
|
8
|
+
)
|
|
9
|
+
|
|
10
|
+
def set_up_hound
|
|
11
|
+
copy_file "hound.yml", ".hound.yml"
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
require "rails/generators"
|
|
2
|
+
|
|
3
|
+
module Suspenders
|
|
4
|
+
class TestingGenerator < Rails::Generators::Base
|
|
5
|
+
source_root File.expand_path(
|
|
6
|
+
File.join("..", "..", "..", "templates"),
|
|
7
|
+
File.dirname(__FILE__),
|
|
8
|
+
)
|
|
9
|
+
|
|
10
|
+
def add_testing_gems
|
|
11
|
+
gem "spring-commands-rspec", group: :development
|
|
12
|
+
gem "rspec-rails", "~> 3.6", group: %i(development test)
|
|
13
|
+
gem "shoulda-matchers", group: :test
|
|
14
|
+
|
|
15
|
+
Bundler.with_clean_env { run "bundle install" }
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def generate_rspec
|
|
19
|
+
generate "rspec:install"
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def configure_rspec
|
|
23
|
+
remove_file "spec/rails_helper.rb"
|
|
24
|
+
remove_file "spec/spec_helper.rb"
|
|
25
|
+
copy_file "rails_helper.rb", "spec/rails_helper.rb"
|
|
26
|
+
copy_file "spec_helper.rb", "spec/spec_helper.rb"
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def provide_shoulda_matchers_config
|
|
30
|
+
copy_file(
|
|
31
|
+
"shoulda_matchers_config_rspec.rb",
|
|
32
|
+
"spec/support/shoulda_matchers.rb",
|
|
33
|
+
)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def configure_spec_support_features
|
|
37
|
+
empty_directory_with_keep_file "spec/features"
|
|
38
|
+
empty_directory_with_keep_file "spec/support/features"
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def configure_i18n_for_test_environment
|
|
42
|
+
copy_file "i18n.rb", "spec/support/i18n.rb"
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def configure_action_mailer_in_specs
|
|
46
|
+
copy_file "action_mailer.rb", "spec/support/action_mailer.rb"
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
private
|
|
50
|
+
|
|
51
|
+
def empty_directory_with_keep_file(destination)
|
|
52
|
+
empty_directory(destination, {})
|
|
53
|
+
keep_file(destination)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def keep_file(destination)
|
|
57
|
+
create_file(File.join(destination, ".keep"))
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
require "rails/generators"
|
|
2
|
+
|
|
3
|
+
module Suspenders
|
|
4
|
+
class ViewsGenerator < Rails::Generators::Base
|
|
5
|
+
source_root File.expand_path(
|
|
6
|
+
File.join("..", "..", "..", "templates"),
|
|
7
|
+
File.dirname(__FILE__),
|
|
8
|
+
)
|
|
9
|
+
|
|
10
|
+
def create_partials_directory
|
|
11
|
+
empty_directory "app/views/application"
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def create_shared_flashes
|
|
15
|
+
copy_file "_flashes.html.erb", "app/views/application/_flashes.html.erb"
|
|
16
|
+
copy_file "flashes_helper.rb", "app/helpers/flashes_helper.rb"
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def create_shared_javascripts
|
|
20
|
+
copy_file "_javascript.html.erb",
|
|
21
|
+
"app/views/application/_javascript.html.erb"
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def create_shared_css_overrides
|
|
25
|
+
copy_file "_css_overrides.html.erb",
|
|
26
|
+
"app/views/application/_css_overrides.html.erb"
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def create_application_layout
|
|
30
|
+
template "suspenders_layout.html.erb.erb",
|
|
31
|
+
"app/views/layouts/application.html.erb",
|
|
32
|
+
force: true
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
data/lib/suspenders/version.rb
CHANGED
|
@@ -169,7 +169,7 @@ RSpec.describe "Suspend a new project with default configuration" do
|
|
|
169
169
|
it "sets action mailer default host and asset host" do
|
|
170
170
|
config_key = 'config\.action_mailer\.asset_host'
|
|
171
171
|
config_value =
|
|
172
|
-
|
|
172
|
+
%q{ENV\.fetch\("ASSET_HOST", ENV\.fetch\("APPLICATION_HOST"\)\)}
|
|
173
173
|
expect(production_config).to match(/#{config_key} = #{config_value}/)
|
|
174
174
|
end
|
|
175
175
|
|
|
@@ -201,6 +201,14 @@ RSpec.describe "Suspend a new project with default configuration" do
|
|
|
201
201
|
)
|
|
202
202
|
end
|
|
203
203
|
|
|
204
|
+
it "configs background jobs for rspec" do
|
|
205
|
+
delayed_job = IO.read("#{project_path}/bin/delayed_job")
|
|
206
|
+
|
|
207
|
+
expect(delayed_job).to match(
|
|
208
|
+
/^require 'delayed\/command'$/,
|
|
209
|
+
)
|
|
210
|
+
end
|
|
211
|
+
|
|
204
212
|
it "configs bullet gem in development" do
|
|
205
213
|
expect(development_config).to match /^ +Bullet.enable = true$/
|
|
206
214
|
expect(development_config).to match /^ +Bullet.bullet_logger = true$/
|
data/spec/support/suspenders.rb
CHANGED
|
@@ -14,9 +14,11 @@ module SuspendersTestHelpers
|
|
|
14
14
|
Dir.chdir(tmp_path) do
|
|
15
15
|
Bundler.with_clean_env do
|
|
16
16
|
add_fakes_to_path
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
with_revision_for_honeybadger do
|
|
18
|
+
`
|
|
19
|
+
#{suspenders_bin} #{APP_NAME} #{arguments}
|
|
20
|
+
`
|
|
21
|
+
end
|
|
20
22
|
Dir.chdir(APP_NAME) do
|
|
21
23
|
with_env("HOME", tmp_path) do
|
|
22
24
|
`git add .`
|
|
@@ -88,12 +90,23 @@ module SuspendersTestHelpers
|
|
|
88
90
|
end
|
|
89
91
|
|
|
90
92
|
def with_env(name, new_value)
|
|
93
|
+
had_key = ENV.has_key?(name)
|
|
91
94
|
prior = ENV[name]
|
|
92
95
|
ENV[name] = new_value.to_s
|
|
93
96
|
|
|
94
97
|
yield
|
|
95
98
|
|
|
96
99
|
ensure
|
|
97
|
-
ENV
|
|
100
|
+
ENV.delete(name)
|
|
101
|
+
|
|
102
|
+
if had_key
|
|
103
|
+
ENV[name] = prior
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
def with_revision_for_honeybadger
|
|
108
|
+
with_env("HEROKU_SLUG_COMMIT", 1) do
|
|
109
|
+
yield
|
|
110
|
+
end
|
|
98
111
|
end
|
|
99
112
|
end
|
data/suspenders.gemspec
CHANGED
|
@@ -5,6 +5,7 @@ require 'date'
|
|
|
5
5
|
|
|
6
6
|
Gem::Specification.new do |s|
|
|
7
7
|
s.required_ruby_version = ">= #{Suspenders::RUBY_VERSION}"
|
|
8
|
+
s.required_rubygems_version = ">= 2.7.4"
|
|
8
9
|
s.authors = ['thoughtbot']
|
|
9
10
|
s.date = Date.today.strftime('%Y-%m-%d')
|
|
10
11
|
|
|
@@ -28,7 +29,6 @@ rush to build something amazing; don't use it if you like missing deadlines.
|
|
|
28
29
|
s.version = Suspenders::VERSION
|
|
29
30
|
|
|
30
31
|
s.add_dependency 'bitters', '~> 1.7'
|
|
31
|
-
s.add_dependency 'bundler', '~> 1.3'
|
|
32
32
|
s.add_dependency 'rails', Suspenders::RAILS_VERSION
|
|
33
33
|
|
|
34
34
|
s.add_development_dependency 'rspec', '~> 3.2'
|
data/templates/Gemfile.erb
CHANGED
|
@@ -8,17 +8,15 @@ end
|
|
|
8
8
|
ruby "<%= Suspenders::RUBY_VERSION %>"
|
|
9
9
|
|
|
10
10
|
gem "autoprefixer-rails"
|
|
11
|
-
gem "delayed_job_active_record"
|
|
12
11
|
gem "flutie"
|
|
13
12
|
gem "honeybadger"
|
|
14
13
|
gem "jquery-rails"
|
|
15
|
-
gem "pg"
|
|
14
|
+
gem "pg", "~> 0.18"
|
|
16
15
|
gem "puma"
|
|
17
16
|
gem "rack-canonical-host"
|
|
18
17
|
gem "rails", "<%= Suspenders::RAILS_VERSION %>"
|
|
19
18
|
gem "recipient_interceptor"
|
|
20
19
|
gem "sass-rails", "~> 5.0"
|
|
21
|
-
gem "simple_form"
|
|
22
20
|
gem "skylight"
|
|
23
21
|
gem "sprockets", ">= 3.0.0"
|
|
24
22
|
gem "suspenders"
|
|
@@ -32,27 +30,20 @@ group :development do
|
|
|
32
30
|
gem "listen"
|
|
33
31
|
gem "rack-mini-profiler", require: false
|
|
34
32
|
gem "spring"
|
|
35
|
-
gem "spring-commands-rspec"
|
|
36
33
|
gem "web-console"
|
|
37
34
|
end
|
|
38
35
|
|
|
39
36
|
group :development, :test do
|
|
40
37
|
gem "awesome_print"
|
|
41
|
-
gem "bullet"
|
|
42
38
|
gem "bundler-audit", ">= 0.5.0", require: false
|
|
43
39
|
gem "dotenv-rails"
|
|
44
|
-
gem "factory_girl_rails"
|
|
45
40
|
gem "pry-byebug"
|
|
46
41
|
gem "pry-rails"
|
|
47
|
-
gem "rspec-rails", "~> 3.6"
|
|
48
42
|
end
|
|
49
43
|
|
|
50
44
|
group :test do
|
|
51
|
-
gem "capybara-webkit"
|
|
52
|
-
gem "database_cleaner"
|
|
53
45
|
gem "formulaic"
|
|
54
46
|
gem "launchy"
|
|
55
|
-
gem "shoulda-matchers"
|
|
56
47
|
gem "simplecov", require: false
|
|
57
48
|
gem "timecop"
|
|
58
49
|
gem "webmock"
|
data/templates/circle.yml.erb
CHANGED
data/templates/dev.rake
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
if Rails.env.development? || Rails.env.test?
|
|
2
|
-
require "
|
|
2
|
+
require "factory_bot"
|
|
3
3
|
|
|
4
4
|
namespace :dev do
|
|
5
5
|
desc "Sample data for local development environment"
|
|
6
6
|
task prime: "db:setup" do
|
|
7
|
-
include
|
|
7
|
+
include FactoryBot::Syntax::Methods
|
|
8
8
|
|
|
9
9
|
# create(:user, email: "user@example.com", password: "password")
|
|
10
10
|
end
|
data/templates/factories.rb
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
FactoryBot.define do
|
|
2
2
|
end
|
data/templates/rails_helper.rb
CHANGED
|
@@ -16,7 +16,7 @@ RSpec.configure do |config|
|
|
|
16
16
|
config.include Features, type: :feature
|
|
17
17
|
config.infer_base_class_for_anonymous_controllers = false
|
|
18
18
|
config.infer_spec_type_from_file_location!
|
|
19
|
-
config.use_transactional_fixtures =
|
|
19
|
+
config.use_transactional_fixtures = true
|
|
20
20
|
end
|
|
21
21
|
|
|
22
22
|
ActiveRecord::Migration.maintain_test_schema!
|
data/templates/spec_helper.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: suspenders
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.46.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- thoughtbot
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2018-01-26 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bitters
|
|
@@ -24,34 +24,20 @@ dependencies:
|
|
|
24
24
|
- - "~>"
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
26
|
version: '1.7'
|
|
27
|
-
- !ruby/object:Gem::Dependency
|
|
28
|
-
name: bundler
|
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
|
30
|
-
requirements:
|
|
31
|
-
- - "~>"
|
|
32
|
-
- !ruby/object:Gem::Version
|
|
33
|
-
version: '1.3'
|
|
34
|
-
type: :runtime
|
|
35
|
-
prerelease: false
|
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
-
requirements:
|
|
38
|
-
- - "~>"
|
|
39
|
-
- !ruby/object:Gem::Version
|
|
40
|
-
version: '1.3'
|
|
41
27
|
- !ruby/object:Gem::Dependency
|
|
42
28
|
name: rails
|
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
|
44
30
|
requirements:
|
|
45
31
|
- - "~>"
|
|
46
32
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: 5.1.
|
|
33
|
+
version: 5.1.4
|
|
48
34
|
type: :runtime
|
|
49
35
|
prerelease: false
|
|
50
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
37
|
requirements:
|
|
52
38
|
- - "~>"
|
|
53
39
|
- !ruby/object:Gem::Version
|
|
54
|
-
version: 5.1.
|
|
40
|
+
version: 5.1.4
|
|
55
41
|
- !ruby/object:Gem::Dependency
|
|
56
42
|
name: rspec
|
|
57
43
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -97,11 +83,20 @@ files:
|
|
|
97
83
|
- lib/suspenders/actions.rb
|
|
98
84
|
- lib/suspenders/adapters/heroku.rb
|
|
99
85
|
- lib/suspenders/app_builder.rb
|
|
86
|
+
- lib/suspenders/generators/analytics_generator.rb
|
|
100
87
|
- lib/suspenders/generators/app_generator.rb
|
|
88
|
+
- lib/suspenders/generators/ci_generator.rb
|
|
89
|
+
- lib/suspenders/generators/db_optimizations_generator.rb
|
|
101
90
|
- lib/suspenders/generators/enforce_ssl_generator.rb
|
|
102
|
-
- lib/suspenders/generators/
|
|
91
|
+
- lib/suspenders/generators/factories_generator.rb
|
|
92
|
+
- lib/suspenders/generators/forms_generator.rb
|
|
93
|
+
- lib/suspenders/generators/jobs_generator.rb
|
|
94
|
+
- lib/suspenders/generators/js_driver_generator.rb
|
|
95
|
+
- lib/suspenders/generators/lint_generator.rb
|
|
103
96
|
- lib/suspenders/generators/static_generator.rb
|
|
104
97
|
- lib/suspenders/generators/stylesheet_base_generator.rb
|
|
98
|
+
- lib/suspenders/generators/testing_generator.rb
|
|
99
|
+
- lib/suspenders/generators/views_generator.rb
|
|
105
100
|
- lib/suspenders/version.rb
|
|
106
101
|
- spec/adapters/heroku_spec.rb
|
|
107
102
|
- spec/fakes/bin/heroku
|
|
@@ -134,13 +129,12 @@ files:
|
|
|
134
129
|
- templates/capybara_webkit.rb
|
|
135
130
|
- templates/circle.yml.erb
|
|
136
131
|
- templates/config_locales_en.yml.erb
|
|
137
|
-
- templates/database_cleaner_rspec.rb
|
|
138
132
|
- templates/dev.rake
|
|
139
133
|
- templates/dotfiles/.ctags
|
|
140
134
|
- templates/dotfiles/.env
|
|
141
135
|
- templates/errors.rb
|
|
142
136
|
- templates/factories.rb
|
|
143
|
-
- templates/
|
|
137
|
+
- templates/factory_bot_rspec.rb
|
|
144
138
|
- templates/flashes_helper.rb
|
|
145
139
|
- templates/hound.yml
|
|
146
140
|
- templates/i18n.rb
|
|
@@ -168,15 +162,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
168
162
|
requirements:
|
|
169
163
|
- - ">="
|
|
170
164
|
- !ruby/object:Gem::Version
|
|
171
|
-
version: 2.
|
|
165
|
+
version: 2.5.0
|
|
172
166
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
173
167
|
requirements:
|
|
174
168
|
- - ">="
|
|
175
169
|
- !ruby/object:Gem::Version
|
|
176
|
-
version:
|
|
170
|
+
version: 2.7.4
|
|
177
171
|
requirements: []
|
|
178
172
|
rubyforge_project:
|
|
179
|
-
rubygems_version: 2.
|
|
173
|
+
rubygems_version: 2.7.4
|
|
180
174
|
signing_key:
|
|
181
175
|
specification_version: 4
|
|
182
176
|
summary: Generate a Rails app using thoughtbot's best practices.
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
require "rails/generators"
|
|
2
|
-
|
|
3
|
-
module Suspenders
|
|
4
|
-
class InitializeActiveJobGenerator < Rails::Generators::Base
|
|
5
|
-
source_root(
|
|
6
|
-
File.expand_path(
|
|
7
|
-
File.join("..", "..", "..", "templates"),
|
|
8
|
-
File.dirname(__FILE__),
|
|
9
|
-
),
|
|
10
|
-
)
|
|
11
|
-
|
|
12
|
-
def initialize_active_job
|
|
13
|
-
copy_file(
|
|
14
|
-
"active_job.rb",
|
|
15
|
-
"config/initializers/active_job.rb",
|
|
16
|
-
)
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
end
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
RSpec.configure do |config|
|
|
2
|
-
config.before(:suite) do
|
|
3
|
-
DatabaseCleaner.clean_with(:deletion)
|
|
4
|
-
end
|
|
5
|
-
|
|
6
|
-
config.before(:each) do
|
|
7
|
-
DatabaseCleaner.strategy = :transaction
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
config.before(:each, js: true) do
|
|
11
|
-
DatabaseCleaner.strategy = :deletion
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
config.before(:each) do
|
|
15
|
-
DatabaseCleaner.start
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
config.after(:each) do
|
|
19
|
-
DatabaseCleaner.clean
|
|
20
|
-
end
|
|
21
|
-
end
|