welaika-suspenders 2.17.0 → 2.19.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/NEWS.md +24 -0
- data/README.md +3 -2
- data/bin/welaika-suspenders +3 -3
- data/lib/suspenders/app_builder.rb +39 -17
- data/lib/suspenders/generators/app_generator.rb +6 -3
- data/lib/suspenders/version.rb +1 -1
- data/spec/features/heroku_spec.rb +12 -0
- data/spec/features/new_project_spec.rb +18 -12
- data/suspenders.gemspec +1 -0
- data/templates/Gemfile.erb +7 -8
- data/templates/bin_setup.erb +3 -4
- data/templates/{capybara_rspec.rb.erb → capybara_webkit.rb} +5 -1
- data/templates/circle.yml.erb +1 -1
- data/templates/factories.rb +2 -0
- data/templates/postgresql_database.yml.erb +3 -3
- data/templates/puma.rb +11 -2
- data/templates/rails_helper.rb +0 -1
- data/templates/rubocop.yml +5 -4
- data/templates/sample.env +4 -1
- data/templates/shoulda_matchers_config_rspec.rb +6 -0
- metadata +20 -5
- data/templates/newrelic.yml.erb +0 -34
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4db05f471d204285e48629664bf5ed3a68d1850d
|
4
|
+
data.tar.gz: 844a6f26a9bcc199d467c75286509cfb428c1f67
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 101a8c61eec93b91087b1eae8129001f7ea918bf8e884d2414ff12b8146c62d8d22be86bfb66eda64262fb6a91b57150b7f56564d07f8df920fed0e272996c5f
|
7
|
+
data.tar.gz: 884243a58cf80b83befaa27de1b3cdc0fafb55dc35aa410b9cdb0ae1449e8cbce4fbf204fc2341e793b036cbbf0ca223a678b127d8ebdc7a1e0ce3e8ddfe71ca
|
data/NEWS.md
CHANGED
@@ -1,3 +1,27 @@
|
|
1
|
+
1.34.0 (unreleased)
|
2
|
+
|
3
|
+
* Suspenders command line responds to `-v` and `--version` options
|
4
|
+
|
5
|
+
1.33.0 (October 23, 2015)
|
6
|
+
|
7
|
+
* Add `quiet_assets` as development dependency
|
8
|
+
* Reduce number of Puma processes and threads to reduce memory usage
|
9
|
+
* Move non-runtime-dependency i18n-tasks to development and test Gemfile groups
|
10
|
+
* Move non-runtime-dependency refills to the development Gemfile group
|
11
|
+
* Generate empty `spec/factories.rb` file in accordance with thoughtbot’s
|
12
|
+
styleguide
|
13
|
+
* Shoulda Matchers 3.0 configuration
|
14
|
+
|
15
|
+
1.32.0 (October 9, 2015)
|
16
|
+
|
17
|
+
* Install Foreman automatically during setup script
|
18
|
+
* Port always defaults to 3000
|
19
|
+
* Provide shoulda-matchers config
|
20
|
+
* Set CI auto-deploy for Heroku suspended apps
|
21
|
+
* Configure capybara-webkit to block unknown URLs
|
22
|
+
* Add mandatory environment variables to .sample.env
|
23
|
+
* Other bugfixes
|
24
|
+
|
1
25
|
1.31.0 (September 3, 2015)
|
2
26
|
|
3
27
|
* Update to Ruby 2.2.3
|
data/README.md
CHANGED
@@ -28,7 +28,7 @@ You can optionally specify alternate Heroku flags:
|
|
28
28
|
|
29
29
|
welaika-suspenders projectname \
|
30
30
|
--heroku true \
|
31
|
-
--heroku-flags "--region eu --addons
|
31
|
+
--heroku-flags "--region eu --addons sendgrid,ssl"
|
32
32
|
|
33
33
|
See all possible Heroku flags:
|
34
34
|
|
@@ -69,7 +69,6 @@ List of changes we made since [this is commit](https://github.com/thoughtbot/sus
|
|
69
69
|
- create a .ruby-gemset file with app name
|
70
70
|
- create common folders like `app/queries`, `app/services`, etc.
|
71
71
|
- use `application.css.sass` instead of `application.css.scss`
|
72
|
-
- add `quiet_assets` gem
|
73
72
|
- add `brakeman` gem
|
74
73
|
- change `i18n_tasks` configuration: set `it` as base locale
|
75
74
|
- set `Rome` as `time_zone`
|
@@ -86,3 +85,5 @@ List of changes we made since [this is commit](https://github.com/thoughtbot/sus
|
|
86
85
|
- add [draper](https://github.com/drapergem/draper) gem and rename `presenters` folder to `decorators`
|
87
86
|
- add [rubocop](https://github.com/bbatsov/rubocop) and a template of `.rubocop.yml`
|
88
87
|
- change rake default task: now includes rubocop and brakeman too
|
88
|
+
- prefer a single file for each `factory_girl` factories
|
89
|
+
- remove new-relic
|
data/bin/welaika-suspenders
CHANGED
@@ -6,9 +6,9 @@ $LOAD_PATH << source_path
|
|
6
6
|
|
7
7
|
require 'suspenders'
|
8
8
|
|
9
|
-
if ['
|
10
|
-
|
11
|
-
|
9
|
+
if ['-v', '--version'].include? ARGV[0]
|
10
|
+
puts Suspenders::VERSION
|
11
|
+
exit 0
|
12
12
|
end
|
13
13
|
|
14
14
|
templates_root = File.expand_path(File.join("..", "templates"), File.dirname(__FILE__))
|
@@ -40,8 +40,16 @@ module Suspenders
|
|
40
40
|
inject_into_class "config/application.rb", "Application", config
|
41
41
|
end
|
42
42
|
|
43
|
+
def configure_quiet_assets
|
44
|
+
config = <<-RUBY
|
45
|
+
config.quiet_assets = true
|
46
|
+
RUBY
|
47
|
+
|
48
|
+
inject_into_class "config/application.rb", "Application", config
|
49
|
+
end
|
50
|
+
|
43
51
|
def provide_setup_script
|
44
|
-
template "bin_setup.erb", "bin/setup",
|
52
|
+
template "bin_setup.erb", "bin/setup", force: true
|
45
53
|
run "chmod a+x bin/setup"
|
46
54
|
end
|
47
55
|
|
@@ -71,10 +79,6 @@ module Suspenders
|
|
71
79
|
copy_file 'factory_girl_rspec.rb', 'spec/support/factory_girl.rb'
|
72
80
|
end
|
73
81
|
|
74
|
-
def set_up_capybara_for_rspec
|
75
|
-
template 'capybara_rspec.rb.erb', 'spec/support/capybara.rb', port_number: port
|
76
|
-
end
|
77
|
-
|
78
82
|
def add_helpers_for_rspec
|
79
83
|
copy_file 'queries_helper_rspec.rb', 'spec/support/queries_helper.rb'
|
80
84
|
copy_file 'fixtures_helper_rspec.rb', 'spec/support/fixtures_helper.rb'
|
@@ -84,10 +88,6 @@ module Suspenders
|
|
84
88
|
copy_file 'faker_rspec.rb', 'spec/support/faker.rb'
|
85
89
|
end
|
86
90
|
|
87
|
-
def configure_newrelic
|
88
|
-
template 'newrelic.yml.erb', 'config/newrelic.yml'
|
89
|
-
end
|
90
|
-
|
91
91
|
def configure_smtp
|
92
92
|
copy_file 'smtp.rb', 'config/smtp.rb'
|
93
93
|
|
@@ -108,7 +108,7 @@ module Suspenders
|
|
108
108
|
config = <<-RUBY
|
109
109
|
|
110
110
|
# Ensure requests are only served from one, canonical host name
|
111
|
-
config.middleware.use Rack::CanonicalHost, ENV.fetch("
|
111
|
+
config.middleware.use Rack::CanonicalHost, ENV.fetch("APPLICATION_HOST")
|
112
112
|
RUBY
|
113
113
|
|
114
114
|
inject_into_file(
|
@@ -224,6 +224,13 @@ end
|
|
224
224
|
copy_file 'database_cleaner_rspec.rb', 'spec/support/database_cleaner.rb'
|
225
225
|
end
|
226
226
|
|
227
|
+
def provide_shoulda_matchers_config
|
228
|
+
copy_file(
|
229
|
+
"shoulda_matchers_config_rspec.rb",
|
230
|
+
"spec/support/shoulda_matchers.rb"
|
231
|
+
)
|
232
|
+
end
|
233
|
+
|
227
234
|
def configure_spec_support_features
|
228
235
|
empty_directory_with_keep_file 'spec/features'
|
229
236
|
empty_directory_with_keep_file 'spec/support/features'
|
@@ -262,10 +269,16 @@ end
|
|
262
269
|
copy_file 'action_mailer.rb', 'spec/support/action_mailer.rb'
|
263
270
|
end
|
264
271
|
|
272
|
+
def configure_capybara_webkit
|
273
|
+
copy_file "capybara_webkit.rb", "spec/support/capybara_webkit.rb"
|
274
|
+
end
|
275
|
+
|
265
276
|
def configure_locales
|
266
277
|
remove_file "config/locales/en.yml"
|
267
278
|
template "config_locales_it.yml.erb", "config/locales/it.yml"
|
279
|
+
end
|
268
280
|
|
281
|
+
def configure_time_formats
|
269
282
|
replace_in_file "config/application.rb",
|
270
283
|
"# config.time_zone = 'Central Time (US & Canada)'",
|
271
284
|
"config.time_zone = 'Rome'"
|
@@ -292,10 +305,9 @@ Rack::Timeout.timeout = (ENV["RACK_TIMEOUT"] || 10).to_i
|
|
292
305
|
end
|
293
306
|
|
294
307
|
def configure_action_mailer
|
295
|
-
action_mailer_host "development", %{"localhost
|
308
|
+
action_mailer_host "development", %{"localhost:3000"}
|
296
309
|
action_mailer_host "test", %{"www.example.com"}
|
297
|
-
action_mailer_host "
|
298
|
-
action_mailer_host "production", %{ENV.fetch("HOST")}
|
310
|
+
action_mailer_host "production", %{ENV.fetch("APPLICATION_HOST")}
|
299
311
|
end
|
300
312
|
|
301
313
|
def configure_available_locales
|
@@ -456,6 +468,20 @@ you can deploy to staging and production with:
|
|
456
468
|
run "chmod a+x bin/deploy"
|
457
469
|
end
|
458
470
|
|
471
|
+
def configure_automatic_deployment
|
472
|
+
staging_remote_name = heroku_app_name_for("staging")
|
473
|
+
deploy_command = <<-YML.strip_heredoc
|
474
|
+
deployment:
|
475
|
+
staging:
|
476
|
+
branch: master
|
477
|
+
commands:
|
478
|
+
- git remote add staging git@heroku.com:#{staging_remote_name}.git
|
479
|
+
- bin/deploy staging
|
480
|
+
YML
|
481
|
+
|
482
|
+
append_file "circle.yml", deploy_command
|
483
|
+
end
|
484
|
+
|
459
485
|
def create_github_repo(repo_name)
|
460
486
|
path_addition = override_path_for_tests
|
461
487
|
run "#{path_addition} hub create #{repo_name}"
|
@@ -578,10 +604,6 @@ task default: "bundler:audit"
|
|
578
604
|
SecureRandom.hex(64)
|
579
605
|
end
|
580
606
|
|
581
|
-
def port
|
582
|
-
@@port ||= [3000, 4000, 5000, 7000, 8000, 9000].sample
|
583
|
-
end
|
584
|
-
|
585
607
|
def serve_static_files_line
|
586
608
|
"config.serve_static_files = ENV['RAILS_SERVE_STATIC_FILES'].present?\n"
|
587
609
|
end
|
@@ -58,6 +58,7 @@ module Suspenders
|
|
58
58
|
def customize_gemfile
|
59
59
|
build :replace_gemfile
|
60
60
|
build :create_ruby_gemset_file
|
61
|
+
build :configure_simple_form
|
61
62
|
build :set_ruby_to_version_being_used
|
62
63
|
|
63
64
|
if options[:heroku]
|
@@ -87,6 +88,7 @@ module Suspenders
|
|
87
88
|
build :provide_dev_prime_task
|
88
89
|
build :configure_generators
|
89
90
|
build :configure_i18n_for_missing_translations
|
91
|
+
build :configure_quiet_assets
|
90
92
|
build :setup_rubocop
|
91
93
|
build :setup_brakeman
|
92
94
|
build :setup_bundler_audit
|
@@ -95,23 +97,24 @@ module Suspenders
|
|
95
97
|
def setup_test_environment
|
96
98
|
say 'Setting up the test environment'
|
97
99
|
build :set_up_factory_girl_for_rspec
|
98
|
-
build :set_up_capybara_for_rspec
|
99
100
|
build :add_helpers_for_rspec
|
101
|
+
build :generate_factories_file
|
100
102
|
build :generate_rspec
|
101
103
|
build :configure_rspec
|
102
104
|
build :configure_background_jobs_for_rspec
|
103
105
|
build :enable_database_cleaner
|
106
|
+
build :provide_shoulda_matchers_config
|
104
107
|
build :configure_spec_support_features
|
105
108
|
build :configure_ci
|
106
109
|
build :configure_i18n_for_test_environment
|
107
110
|
build :configure_i18n_tasks
|
108
111
|
build :configure_action_mailer_in_specs
|
109
112
|
build :set_up_faker
|
113
|
+
build :configure_capybara_webkit
|
110
114
|
end
|
111
115
|
|
112
116
|
def setup_production_environment
|
113
117
|
say 'Setting up the production environment'
|
114
|
-
build :configure_newrelic
|
115
118
|
build :configure_smtp
|
116
119
|
build :configure_rack_timeout
|
117
120
|
build :enable_rack_canonical_host
|
@@ -144,7 +147,6 @@ module Suspenders
|
|
144
147
|
build :configure_active_job
|
145
148
|
build :configure_rack_timeout
|
146
149
|
build :configure_time_formats
|
147
|
-
build :configure_simple_form
|
148
150
|
build :configure_slim
|
149
151
|
build :disable_xml_params
|
150
152
|
build :configure_available_locales
|
@@ -185,6 +187,7 @@ module Suspenders
|
|
185
187
|
build :set_heroku_remotes
|
186
188
|
build :set_heroku_rails_secrets
|
187
189
|
build :provide_deploy_script
|
190
|
+
build :configure_automatic_deployment
|
188
191
|
end
|
189
192
|
end
|
190
193
|
|
data/lib/suspenders/version.rb
CHANGED
@@ -33,6 +33,18 @@ RSpec.describe "Heroku" do
|
|
33
33
|
|
34
34
|
expect(readme).to include("./bin/deploy staging")
|
35
35
|
expect(readme).to include("./bin/deploy production")
|
36
|
+
|
37
|
+
circle_yml_path = "#{project_path}/circle.yml"
|
38
|
+
circle_yml = IO.read(circle_yml_path)
|
39
|
+
|
40
|
+
expect(circle_yml).to include <<-YML.strip_heredoc
|
41
|
+
deployment:
|
42
|
+
staging:
|
43
|
+
branch: master
|
44
|
+
commands:
|
45
|
+
- git remote add staging git@heroku.com:#{app_name}-staging.git
|
46
|
+
- bin/deploy staging
|
47
|
+
YML
|
36
48
|
end
|
37
49
|
|
38
50
|
it "suspends a project with extra Heroku flags" do
|
@@ -49,6 +49,10 @@ RSpec.describe "Suspend a new project with default configuration" do
|
|
49
49
|
expect(File).to exist("#{project_path}/spec/support/action_mailer.rb")
|
50
50
|
end
|
51
51
|
|
52
|
+
it "configures capybara-webkit" do
|
53
|
+
expect(File).to exist("#{project_path}/spec/support/capybara_webkit.rb")
|
54
|
+
end
|
55
|
+
|
52
56
|
it "adds support file for i18n" do
|
53
57
|
expect(File).to exist("#{project_path}/spec/support/i18n.rb")
|
54
58
|
end
|
@@ -65,14 +69,6 @@ RSpec.describe "Suspend a new project with default configuration" do
|
|
65
69
|
expect(File).to exist("#{project_path}/spec/support/queries_helper.rb")
|
66
70
|
end
|
67
71
|
|
68
|
-
it "ensures newrelic.yml reads NewRelic license from env" do
|
69
|
-
newrelic_file = IO.read("#{project_path}/config/newrelic.yml")
|
70
|
-
|
71
|
-
expect(newrelic_file).to match(
|
72
|
-
/license_key: "<%= ENV\["NEW_RELIC_LICENSE_KEY"\] %>"/
|
73
|
-
)
|
74
|
-
end
|
75
|
-
|
76
72
|
it "configs locale and timezone" do
|
77
73
|
result = IO.read("#{project_path}/config/application.rb")
|
78
74
|
|
@@ -91,6 +87,14 @@ RSpec.describe "Suspend a new project with default configuration" do
|
|
91
87
|
)
|
92
88
|
end
|
93
89
|
|
90
|
+
it "adds explicit quiet_assets configuration" do
|
91
|
+
result = IO.read("#{project_path}/config/application.rb")
|
92
|
+
|
93
|
+
expect(result).to match(
|
94
|
+
/^ +config.quiet_assets = true$/
|
95
|
+
)
|
96
|
+
end
|
97
|
+
|
94
98
|
it "raises on missing translations in development and test" do
|
95
99
|
%w[development test].each do |environment|
|
96
100
|
environment_file =
|
@@ -131,6 +135,12 @@ RSpec.describe "Suspend a new project with default configuration" do
|
|
131
135
|
expect(spec_helper_file).to match(/^SimpleCov.start "rails" do$/)
|
132
136
|
end
|
133
137
|
|
138
|
+
it "uses APPLICATION_HOST, not HOST in the production config" do
|
139
|
+
prod_env_file = IO.read("#{project_path}/config/environments/production.rb")
|
140
|
+
expect(prod_env_file).to match(/"APPLICATION_HOST"/)
|
141
|
+
expect(prod_env_file).not_to match(/"HOST"/)
|
142
|
+
end
|
143
|
+
|
134
144
|
it "configs active job queue adapter" do
|
135
145
|
application_config = IO.read("#{project_path}/config/application.rb")
|
136
146
|
test_config = IO.read("#{project_path}/config/environments/test.rb")
|
@@ -181,8 +191,4 @@ RSpec.describe "Suspend a new project with default configuration" do
|
|
181
191
|
expect(file).not_to match(/^$\n/)
|
182
192
|
end
|
183
193
|
end
|
184
|
-
|
185
|
-
def analytics_partial
|
186
|
-
IO.read("#{project_path}/app/views/application/_analytics.html.erb")
|
187
|
-
end
|
188
194
|
end
|
data/suspenders.gemspec
CHANGED
@@ -28,6 +28,7 @@ weLaika's fork of the famous thoughbot suspenders gem.
|
|
28
28
|
s.add_dependency 'bitters', '~> 1.1.0'
|
29
29
|
s.add_dependency 'bundler', '~> 1.3'
|
30
30
|
s.add_dependency 'rails', Suspenders::RAILS_VERSION
|
31
|
+
s.add_dependency 'nokogiri', '1.6.0' # temp fix for iconv.h problem
|
31
32
|
|
32
33
|
s.add_development_dependency 'rspec', '~> 3.2'
|
33
34
|
s.add_development_dependency 'pry-byebug'
|
data/templates/Gemfile.erb
CHANGED
@@ -11,10 +11,8 @@ gem "draper"
|
|
11
11
|
gem "email_validator"
|
12
12
|
gem "flutie"
|
13
13
|
gem "high_voltage"
|
14
|
-
gem "i18n-tasks"
|
15
14
|
gem "jquery-rails"
|
16
15
|
gem "neat", "~> 1.7.0"
|
17
|
-
gem "newrelic_rpm", ">= 3.9.8"
|
18
16
|
gem "normalize-rails", "~> 3.0.0"
|
19
17
|
gem "pg"
|
20
18
|
gem "puma"
|
@@ -22,16 +20,16 @@ gem "rack-canonical-host"
|
|
22
20
|
gem "rails", "<%= Suspenders::RAILS_VERSION %>"
|
23
21
|
gem "rails-i18n"
|
24
22
|
gem "recipient_interceptor"
|
25
|
-
gem "refills"
|
26
23
|
gem "sass-rails", "~> 5.0"
|
27
|
-
gem "slim-rails"
|
28
24
|
gem "simple_form"
|
25
|
+
gem "slim-rails"
|
29
26
|
gem "title"
|
30
27
|
gem "uglifier"
|
31
28
|
|
32
29
|
group :development do
|
33
30
|
gem "letter_opener"
|
34
31
|
gem "quiet_assets"
|
32
|
+
gem "refills"
|
35
33
|
gem "spring"
|
36
34
|
gem "spring-commands-rspec"
|
37
35
|
gem "web-console"
|
@@ -43,8 +41,9 @@ group :development, :test do
|
|
43
41
|
gem "bullet"
|
44
42
|
gem "bundler-audit", require: false
|
45
43
|
gem "dotenv-rails"
|
46
|
-
gem "faker"
|
47
44
|
gem "factory_girl_rails"
|
45
|
+
gem "faker"
|
46
|
+
gem "i18n-tasks"
|
48
47
|
gem "priscilla"
|
49
48
|
gem "pry-bloodline"
|
50
49
|
gem "pry-byebug"
|
@@ -54,13 +53,13 @@ group :development, :test do
|
|
54
53
|
end
|
55
54
|
|
56
55
|
group :test do
|
57
|
-
gem "capybara-webkit"
|
56
|
+
gem "capybara-webkit"
|
58
57
|
gem "database_cleaner"
|
59
58
|
gem "formulaic"
|
60
59
|
gem "launchy"
|
61
|
-
gem "shoulda-matchers"
|
60
|
+
gem "shoulda-matchers"
|
62
61
|
gem "simplecov", require: false
|
63
|
-
gem
|
62
|
+
gem "simplecov-json", require: false
|
64
63
|
gem "timecop"
|
65
64
|
gem "webmock"
|
66
65
|
end
|
data/templates/bin_setup.erb
CHANGED
@@ -16,19 +16,18 @@ if [ ! -f .env ]; then
|
|
16
16
|
fi
|
17
17
|
|
18
18
|
# Set up database and add any development seed data
|
19
|
-
|
19
|
+
bin/rake dev:prime
|
20
20
|
|
21
21
|
# Add binstubs to PATH via export PATH=".git/safe/../../bin:$PATH" in ~/.zshenv
|
22
22
|
mkdir -p .git/safe
|
23
23
|
|
24
24
|
# Pick a port for Foreman
|
25
25
|
if ! grep --quiet --no-messages --fixed-strings 'port' .foreman; then
|
26
|
-
printf 'port:
|
26
|
+
printf 'port: 3000\n' >> .foreman
|
27
27
|
fi
|
28
28
|
|
29
29
|
if ! command -v foreman > /dev/null; then
|
30
|
-
|
31
|
-
printf 'See https://github.com/ddollar/foreman for install instructions.\n'
|
30
|
+
gem install foreman
|
32
31
|
fi
|
33
32
|
|
34
33
|
# Only if this isn't CI
|
@@ -1,5 +1,5 @@
|
|
1
1
|
Capybara.javascript_driver = :webkit
|
2
|
-
Capybara.asset_host = "http://localhost
|
2
|
+
Capybara.asset_host = "http://localhost:3000"
|
3
3
|
|
4
4
|
module CapybaraHelper
|
5
5
|
def page!
|
@@ -9,6 +9,10 @@ module CapybaraHelper
|
|
9
9
|
def screenshot!
|
10
10
|
save_and_open_screenshot
|
11
11
|
end
|
12
|
+
|
13
|
+
def blur!
|
14
|
+
page.find('body').click
|
15
|
+
end
|
12
16
|
end
|
13
17
|
|
14
18
|
Capybara::Webkit.configure do |config|
|
data/templates/circle.yml.erb
CHANGED
@@ -3,8 +3,8 @@ development: &default
|
|
3
3
|
database: <%= app_name %>_development
|
4
4
|
encoding: utf8
|
5
5
|
min_messages: warning
|
6
|
-
pool: <%%= ENV.fetch("DB_POOL", 5) %>
|
7
|
-
reaping_frequency: <%%= ENV.fetch("DB_REAPING_FREQUENCY", 10) %>
|
6
|
+
pool: <%%= Integer(ENV.fetch("DB_POOL", 5)) %>
|
7
|
+
reaping_frequency: <%%= Integer(ENV.fetch("DB_REAPING_FREQUENCY", 10)) %>
|
8
8
|
timeout: 5000
|
9
9
|
|
10
10
|
test:
|
@@ -14,7 +14,7 @@ test:
|
|
14
14
|
production: &deploy
|
15
15
|
encoding: utf8
|
16
16
|
min_messages: warning
|
17
|
-
pool: <%%= [ENV.fetch("MAX_THREADS", 5), ENV.fetch("DB_POOL", 5)].max %>
|
17
|
+
pool: <%%= [Integer(ENV.fetch("MAX_THREADS", 5)), Integer(ENV.fetch("DB_POOL", 5))].max %>
|
18
18
|
timeout: 5000
|
19
19
|
url: <%%= ENV.fetch("DATABASE_URL", "") %>
|
20
20
|
|
data/templates/puma.rb
CHANGED
@@ -3,8 +3,17 @@
|
|
3
3
|
# The environment variable WEB_CONCURRENCY may be set to a default value based
|
4
4
|
# on dyno size. To manually configure this value use heroku config:set
|
5
5
|
# WEB_CONCURRENCY.
|
6
|
-
|
7
|
-
|
6
|
+
#
|
7
|
+
# Increasing the number of workers will increase the amount of resting memory
|
8
|
+
# your dynos use. Increasing the number of threads will increase the amount of
|
9
|
+
# potential bloat added to your dynos when they are responding to heavy
|
10
|
+
# requests.
|
11
|
+
#
|
12
|
+
# Starting with a low number of workers and threads provides adequate
|
13
|
+
# performance for most applications, even under load, while maintaining a low
|
14
|
+
# risk of overusing memory.
|
15
|
+
workers Integer(ENV.fetch("WEB_CONCURRENCY", 2))
|
16
|
+
threads_count = Integer(ENV.fetch("MAX_THREADS", 2))
|
8
17
|
threads(threads_count, threads_count)
|
9
18
|
|
10
19
|
preload_app!
|
data/templates/rails_helper.rb
CHANGED
@@ -4,7 +4,6 @@ require File.expand_path("../../config/environment", __FILE__)
|
|
4
4
|
abort("DATABASE_URL environment variable is set") if ENV["DATABASE_URL"]
|
5
5
|
|
6
6
|
require "rspec/rails"
|
7
|
-
require "shoulda/matchers"
|
8
7
|
|
9
8
|
Dir[Rails.root.join("spec/support/**/*.rb")].sort.each { |file| require file }
|
10
9
|
|
data/templates/rubocop.yml
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
AllCops:
|
2
2
|
RunRailsCops: true
|
3
3
|
Exclude:
|
4
|
-
-
|
5
|
-
-
|
6
|
-
-
|
4
|
+
- "db/**/*"
|
5
|
+
- "config/**/*"
|
6
|
+
- "bin/*"
|
7
|
+
- "spec/i18n_spec.rb"
|
7
8
|
|
8
9
|
Metrics/LineLength:
|
9
10
|
Max: 100
|
@@ -20,4 +21,4 @@ Metrics/AbcSize:
|
|
20
21
|
|
21
22
|
Lint/Debugger:
|
22
23
|
Exclude:
|
23
|
-
-
|
24
|
+
- "spec/support/capybara_webkit.rb"
|
data/templates/sample.env
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: welaika-suspenders
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.19.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- thoughtbot
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-
|
12
|
+
date: 2015-11-03 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bitters
|
@@ -53,6 +53,20 @@ dependencies:
|
|
53
53
|
- - "~>"
|
54
54
|
- !ruby/object:Gem::Version
|
55
55
|
version: 4.2.0
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: nokogiri
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - '='
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: 1.6.0
|
63
|
+
type: :runtime
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - '='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 1.6.0
|
56
70
|
- !ruby/object:Gem::Dependency
|
57
71
|
name: rspec
|
58
72
|
requirement: !ruby/object:Gem::Requirement
|
@@ -132,7 +146,7 @@ files:
|
|
132
146
|
- templates/brakeman.rake
|
133
147
|
- templates/browserslist
|
134
148
|
- templates/bundler_audit.rake
|
135
|
-
- templates/
|
149
|
+
- templates/capybara_webkit.rb
|
136
150
|
- templates/circle.yml.erb
|
137
151
|
- templates/config_i18n_tasks.yml
|
138
152
|
- templates/config_locales_it.yml.erb
|
@@ -141,13 +155,13 @@ files:
|
|
141
155
|
- templates/disable_xml_params.rb
|
142
156
|
- templates/dotfiles/.ctags
|
143
157
|
- templates/errors.rb
|
158
|
+
- templates/factories.rb
|
144
159
|
- templates/factory_girl_rspec.rb
|
145
160
|
- templates/faker_rspec.rb
|
146
161
|
- templates/fixtures_helper_rspec.rb
|
147
162
|
- templates/flashes_helper.rb
|
148
163
|
- templates/i18n.rb
|
149
164
|
- templates/json_encoding.rb
|
150
|
-
- templates/newrelic.yml.erb
|
151
165
|
- templates/postgresql_database.yml.erb
|
152
166
|
- templates/puma.rb
|
153
167
|
- templates/queries_helper_rspec.rb
|
@@ -156,6 +170,7 @@ files:
|
|
156
170
|
- templates/rubocop.yml
|
157
171
|
- templates/sample.env
|
158
172
|
- templates/secrets.yml
|
173
|
+
- templates/shoulda_matchers_config_rspec.rb
|
159
174
|
- templates/slim.rb
|
160
175
|
- templates/smtp.rb
|
161
176
|
- templates/spec_helper.rb
|
@@ -183,7 +198,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
183
198
|
version: '0'
|
184
199
|
requirements: []
|
185
200
|
rubyforge_project:
|
186
|
-
rubygems_version: 2.4.
|
201
|
+
rubygems_version: 2.4.8
|
187
202
|
signing_key:
|
188
203
|
specification_version: 4
|
189
204
|
summary: Generate a Rails app using thoughtbot's best practices.
|
data/templates/newrelic.yml.erb
DELETED
@@ -1,34 +0,0 @@
|
|
1
|
-
common: &default_settings
|
2
|
-
app_name: "<%= app_name %>"
|
3
|
-
audit_log:
|
4
|
-
enabled: false
|
5
|
-
browser_monitoring:
|
6
|
-
auto_instrument: true
|
7
|
-
capture_params: false
|
8
|
-
developer_mode: false
|
9
|
-
error_collector:
|
10
|
-
capture_source: true
|
11
|
-
enabled: true
|
12
|
-
ignore_errors: "ActionController::RoutingError,Sinatra::NotFound"
|
13
|
-
license_key: "<%%= ENV["NEW_RELIC_LICENSE_KEY"] %>"
|
14
|
-
log_level: info
|
15
|
-
monitor_mode: true
|
16
|
-
transaction_tracer:
|
17
|
-
enabled: true
|
18
|
-
record_sql: obfuscated
|
19
|
-
stack_trace_threshold: 0.500
|
20
|
-
transaction_threshold: apdex_f
|
21
|
-
development:
|
22
|
-
<<: *default_settings
|
23
|
-
monitor_mode: false
|
24
|
-
developer_mode: true
|
25
|
-
test:
|
26
|
-
<<: *default_settings
|
27
|
-
monitor_mode: false
|
28
|
-
production:
|
29
|
-
<<: *default_settings
|
30
|
-
monitor_mode: true
|
31
|
-
staging:
|
32
|
-
<<: *default_settings
|
33
|
-
app_name: "<%= app_name %> (Staging)"
|
34
|
-
monitor_mode: true
|