suspenders 1.18.0 → 1.19.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/.ruby-version +1 -1
- data/.travis.yml +1 -1
- data/Gemfile.lock +31 -31
- data/NEWS.md +12 -0
- data/README.md +6 -6
- data/lib/suspenders/app_builder.rb +33 -8
- data/lib/suspenders/generators/app_generator.rb +7 -0
- data/lib/suspenders/version.rb +2 -2
- data/spec/support/fake_heroku.rb +2 -2
- data/templates/Gemfile.erb +2 -1
- data/templates/bin_setup.erb +1 -4
- data/templates/bundler_audit.rake +11 -0
- data/templates/rack_timeout.rb +1 -1
- data/templates/unicorn.rb +2 -2
- metadata +7 -6
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 5f8164830fb3ff981e7d5a410cf0edbebb99dd3b
|
|
4
|
+
data.tar.gz: 339126a56d93d04c8962ccfb76c745c5006a3d99
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 0da7e5681330e072141c4d9786aaca5fe7d2799dc6ac2aedce374871b48bf89f63ccaabcb79d5bbe4818500b94458145d4731fa949687f5cbb2a38d7a4d9f8b5
|
|
7
|
+
data.tar.gz: be69aea7445300aadd43dba59237fcd1963b1b20c7b19d63d83ebcb0e57457ff61e345e5754557eb1831f9aca69aaacbb52dcb2885e0749509fbc254b7509bba
|
data/.ruby-version
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
2.1.
|
|
1
|
+
2.1.4
|
data/.travis.yml
CHANGED
data/Gemfile.lock
CHANGED
|
@@ -1,35 +1,35 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
suspenders (1.
|
|
4
|
+
suspenders (1.19.0)
|
|
5
5
|
bitters (~> 0.10.0)
|
|
6
6
|
bundler (~> 1.3)
|
|
7
|
-
rails (= 4.1.
|
|
7
|
+
rails (= 4.1.8)
|
|
8
8
|
|
|
9
9
|
GEM
|
|
10
10
|
remote: https://rubygems.org/
|
|
11
11
|
specs:
|
|
12
|
-
actionmailer (4.1.
|
|
13
|
-
actionpack (= 4.1.
|
|
14
|
-
actionview (= 4.1.
|
|
12
|
+
actionmailer (4.1.8)
|
|
13
|
+
actionpack (= 4.1.8)
|
|
14
|
+
actionview (= 4.1.8)
|
|
15
15
|
mail (~> 2.5, >= 2.5.4)
|
|
16
|
-
actionpack (4.1.
|
|
17
|
-
actionview (= 4.1.
|
|
18
|
-
activesupport (= 4.1.
|
|
16
|
+
actionpack (4.1.8)
|
|
17
|
+
actionview (= 4.1.8)
|
|
18
|
+
activesupport (= 4.1.8)
|
|
19
19
|
rack (~> 1.5.2)
|
|
20
20
|
rack-test (~> 0.6.2)
|
|
21
|
-
actionview (4.1.
|
|
22
|
-
activesupport (= 4.1.
|
|
21
|
+
actionview (4.1.8)
|
|
22
|
+
activesupport (= 4.1.8)
|
|
23
23
|
builder (~> 3.1)
|
|
24
24
|
erubis (~> 2.7.0)
|
|
25
|
-
activemodel (4.1.
|
|
26
|
-
activesupport (= 4.1.
|
|
25
|
+
activemodel (4.1.8)
|
|
26
|
+
activesupport (= 4.1.8)
|
|
27
27
|
builder (~> 3.1)
|
|
28
|
-
activerecord (4.1.
|
|
29
|
-
activemodel (= 4.1.
|
|
30
|
-
activesupport (= 4.1.
|
|
28
|
+
activerecord (4.1.8)
|
|
29
|
+
activemodel (= 4.1.8)
|
|
30
|
+
activesupport (= 4.1.8)
|
|
31
31
|
arel (~> 5.0.0)
|
|
32
|
-
activesupport (4.1.
|
|
32
|
+
activesupport (4.1.8)
|
|
33
33
|
i18n (~> 0.6, >= 0.6.9)
|
|
34
34
|
json (~> 1.7, >= 1.7.7)
|
|
35
35
|
minitest (~> 5.1)
|
|
@@ -70,11 +70,11 @@ GEM
|
|
|
70
70
|
hike (1.2.3)
|
|
71
71
|
i18n (0.6.11)
|
|
72
72
|
json (1.8.1)
|
|
73
|
-
mail (2.6.
|
|
73
|
+
mail (2.6.3)
|
|
74
74
|
mime-types (>= 1.16, < 3)
|
|
75
75
|
mime-types (1.25.1)
|
|
76
76
|
mini_portile (0.6.0)
|
|
77
|
-
minitest (5.4.
|
|
77
|
+
minitest (5.4.3)
|
|
78
78
|
multi_json (1.10.1)
|
|
79
79
|
multi_test (0.1.1)
|
|
80
80
|
nokogiri (1.6.2.1)
|
|
@@ -82,19 +82,19 @@ GEM
|
|
|
82
82
|
rack (1.5.2)
|
|
83
83
|
rack-test (0.6.2)
|
|
84
84
|
rack (>= 1.0)
|
|
85
|
-
rails (4.1.
|
|
86
|
-
actionmailer (= 4.1.
|
|
87
|
-
actionpack (= 4.1.
|
|
88
|
-
actionview (= 4.1.
|
|
89
|
-
activemodel (= 4.1.
|
|
90
|
-
activerecord (= 4.1.
|
|
91
|
-
activesupport (= 4.1.
|
|
85
|
+
rails (4.1.8)
|
|
86
|
+
actionmailer (= 4.1.8)
|
|
87
|
+
actionpack (= 4.1.8)
|
|
88
|
+
actionview (= 4.1.8)
|
|
89
|
+
activemodel (= 4.1.8)
|
|
90
|
+
activerecord (= 4.1.8)
|
|
91
|
+
activesupport (= 4.1.8)
|
|
92
92
|
bundler (>= 1.3.0, < 2.0)
|
|
93
|
-
railties (= 4.1.
|
|
93
|
+
railties (= 4.1.8)
|
|
94
94
|
sprockets-rails (~> 2.0)
|
|
95
|
-
railties (4.1.
|
|
96
|
-
actionpack (= 4.1.
|
|
97
|
-
activesupport (= 4.1.
|
|
95
|
+
railties (4.1.8)
|
|
96
|
+
actionpack (= 4.1.8)
|
|
97
|
+
activesupport (= 4.1.8)
|
|
98
98
|
rake (>= 0.8.7)
|
|
99
99
|
thor (>= 0.18.1, < 2.0)
|
|
100
100
|
rake (10.3.2)
|
|
@@ -106,8 +106,8 @@ GEM
|
|
|
106
106
|
rspec-expectations (2.99.0)
|
|
107
107
|
diff-lcs (>= 1.1.3, < 2.0)
|
|
108
108
|
rspec-mocks (2.99.0)
|
|
109
|
-
sass (3.4.
|
|
110
|
-
sprockets (2.12.
|
|
109
|
+
sass (3.4.8)
|
|
110
|
+
sprockets (2.12.3)
|
|
111
111
|
hike (~> 1.2)
|
|
112
112
|
multi_json (~> 1.0)
|
|
113
113
|
rack (~> 1.0)
|
data/NEWS.md
CHANGED
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
1.19.0 (November 23, 2014)
|
|
2
|
+
|
|
3
|
+
* Use Ruby 2.1.4.
|
|
4
|
+
* Use Rails 4.1.8.
|
|
5
|
+
* Add Bundler Audit gem for scanning the Gemfile
|
|
6
|
+
for insecure dependencies based on published CVEs.
|
|
7
|
+
* Use Heroku-recommended timeout numbers.
|
|
8
|
+
* [Improve memory] of app on Heroku with New Relic.
|
|
9
|
+
* Turn off RSpec verbose mode by default.
|
|
10
|
+
|
|
11
|
+
[Improve memory]: http://forum.upcase.com/t/how-to-free-up-swap-space-heroku/3017/13?u=croaky
|
|
12
|
+
|
|
1
13
|
1.18.0 (October 23, 2014)
|
|
2
14
|
|
|
3
15
|
* Use Ruby 2.1.3.
|
data/README.md
CHANGED
|
@@ -59,6 +59,8 @@ And development gems like:
|
|
|
59
59
|
objects
|
|
60
60
|
* [ByeBug](https://github.com/deivid-rodriguez/byebug) for interactively
|
|
61
61
|
debugging behavior
|
|
62
|
+
* [Bundler Audit](https://github.com/rubysec/bundler-audit) for scanning the
|
|
63
|
+
Gemfile for insecure dependencies based on published CVEs
|
|
62
64
|
* [Spring](https://github.com/rails/spring) for fast Rails actions via
|
|
63
65
|
pre-loading
|
|
64
66
|
|
|
@@ -85,19 +87,17 @@ Suspenders also comes with:
|
|
|
85
87
|
* Rails' flashes set up and in application layout
|
|
86
88
|
* A few nice time formats set up for localization
|
|
87
89
|
* `Rack::Deflater` to [compress responses with Gzip][compress]
|
|
88
|
-
* [Fast-failing factories][fast]
|
|
89
90
|
* A [low database connection pool limit][pool]
|
|
90
91
|
* [Safe binstubs][binstub]
|
|
91
92
|
* [t() and l() in specs without prefixing with I18n][i18n]
|
|
92
93
|
* An automatically-created `SECRET_KEY_BASE` environment variable in all
|
|
93
|
-
environments
|
|
94
|
-
* Configuration for [Travis Pro][travis] continuous integration
|
|
95
|
-
* The analytics adapter [Segment
|
|
96
|
-
Analytics, Intercom, Facebook Ads, Twitter Ads, etc.)
|
|
94
|
+
environments
|
|
95
|
+
* Configuration for [Travis Pro][travis] continuous integration
|
|
96
|
+
* The analytics adapter [Segment][segment] (and therefore config for Google
|
|
97
|
+
Analytics, Intercom, Facebook Ads, Twitter Ads, etc.)
|
|
97
98
|
|
|
98
99
|
[bin]: http://robots.thoughtbot.com/bin-setup
|
|
99
100
|
[compress]: http://robots.thoughtbot.com/content-compression-with-rack-deflater/
|
|
100
|
-
[fast]: http://robots.thoughtbot.com/testing-your-factories-first
|
|
101
101
|
[pool]: https://devcenter.heroku.com/articles/concurrency-and-database-connections
|
|
102
102
|
[binstub]: https://github.com/thoughtbot/suspenders/pull/282
|
|
103
103
|
[i18n]: https://github.com/thoughtbot/suspenders/pull/304
|
|
@@ -280,10 +280,9 @@ end
|
|
|
280
280
|
end
|
|
281
281
|
|
|
282
282
|
def create_heroku_apps
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
run "#{path_addition} heroku config:add RACK_ENV=staging RAILS_ENV=staging --remote=staging"
|
|
283
|
+
run_heroku "create #{app_name}-production", "production"
|
|
284
|
+
run_heroku "create #{app_name}-staging", "staging"
|
|
285
|
+
run_heroku "config:add RACK_ENV=staging RAILS_ENV=staging", "staging"
|
|
287
286
|
end
|
|
288
287
|
|
|
289
288
|
def set_heroku_remotes
|
|
@@ -310,9 +309,15 @@ fi
|
|
|
310
309
|
end
|
|
311
310
|
|
|
312
311
|
def set_heroku_rails_secrets
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
312
|
+
%w(staging production).each do |environment|
|
|
313
|
+
run_heroku "config:add SECRET_KEY_BASE=#{generate_secret}", environment
|
|
314
|
+
end
|
|
315
|
+
end
|
|
316
|
+
|
|
317
|
+
def set_memory_management_variable
|
|
318
|
+
%w(staging production).each do |environment|
|
|
319
|
+
run_heroku "config:add NEW_RELIC_AGGRESSIVE_KEEPALIVE=1", environment
|
|
320
|
+
end
|
|
316
321
|
end
|
|
317
322
|
|
|
318
323
|
def create_github_repo(repo_name)
|
|
@@ -325,6 +330,11 @@ fi
|
|
|
325
330
|
'app/views/application/_analytics.html.erb'
|
|
326
331
|
end
|
|
327
332
|
|
|
333
|
+
def setup_bundler_audit
|
|
334
|
+
copy_file "bundler_audit.rake", "lib/tasks/bundler_audit.rake"
|
|
335
|
+
append_file "Rakefile", %{\ntask default: "bundler:audit"\n}
|
|
336
|
+
end
|
|
337
|
+
|
|
328
338
|
def copy_miscellaneous_files
|
|
329
339
|
copy_file 'errors.rb', 'config/initializers/errors.rb'
|
|
330
340
|
end
|
|
@@ -354,7 +364,17 @@ fi
|
|
|
354
364
|
|
|
355
365
|
def setup_default_rake_task
|
|
356
366
|
append_file 'Rakefile' do
|
|
357
|
-
|
|
367
|
+
<<-EOS
|
|
368
|
+
task(:default).clear
|
|
369
|
+
task default: [:spec]
|
|
370
|
+
|
|
371
|
+
if defined? RSpec
|
|
372
|
+
task(:spec).clear
|
|
373
|
+
RSpec::Core::RakeTask.new(:spec) do |t|
|
|
374
|
+
t.verbose = false
|
|
375
|
+
end
|
|
376
|
+
end
|
|
377
|
+
EOS
|
|
358
378
|
end
|
|
359
379
|
end
|
|
360
380
|
|
|
@@ -373,6 +393,11 @@ fi
|
|
|
373
393
|
end
|
|
374
394
|
end
|
|
375
395
|
|
|
396
|
+
def run_heroku(command, environment)
|
|
397
|
+
path_addition = override_path_for_tests
|
|
398
|
+
run "#{path_addition} heroku #{command} --remote #{environment}"
|
|
399
|
+
end
|
|
400
|
+
|
|
376
401
|
def factories_spec_rake_task
|
|
377
402
|
IO.read find_in_source_paths('factories_spec_rake_task.rb')
|
|
378
403
|
end
|
|
@@ -40,6 +40,7 @@ module Suspenders
|
|
|
40
40
|
invoke :create_heroku_apps
|
|
41
41
|
invoke :create_github_repo
|
|
42
42
|
invoke :setup_segment_io
|
|
43
|
+
invoke :setup_bundler_audit
|
|
43
44
|
invoke :outro
|
|
44
45
|
end
|
|
45
46
|
|
|
@@ -156,6 +157,7 @@ module Suspenders
|
|
|
156
157
|
build :create_heroku_apps
|
|
157
158
|
build :set_heroku_remotes
|
|
158
159
|
build :set_heroku_rails_secrets
|
|
160
|
+
build :set_memory_management_variable
|
|
159
161
|
end
|
|
160
162
|
end
|
|
161
163
|
|
|
@@ -175,6 +177,11 @@ module Suspenders
|
|
|
175
177
|
build :gitignore_files
|
|
176
178
|
end
|
|
177
179
|
|
|
180
|
+
def setup_bundler_audit
|
|
181
|
+
say "Setting up bundler-audit"
|
|
182
|
+
build :setup_bundler_audit
|
|
183
|
+
end
|
|
184
|
+
|
|
178
185
|
def init_git
|
|
179
186
|
build :init_git
|
|
180
187
|
end
|
data/lib/suspenders/version.rb
CHANGED
data/spec/support/fake_heroku.rb
CHANGED
|
@@ -25,14 +25,14 @@ class FakeHeroku
|
|
|
25
25
|
|
|
26
26
|
def self.has_created_app_for?(remote_name)
|
|
27
27
|
app_name = "#{SuspendersTestHelpers::APP_NAME}-#{remote_name}"
|
|
28
|
-
expected_line = "create #{app_name} --remote
|
|
28
|
+
expected_line = "create #{app_name} --remote #{remote_name}\n"
|
|
29
29
|
|
|
30
30
|
File.foreach(RECORDER).any? { |line| line == expected_line }
|
|
31
31
|
end
|
|
32
32
|
|
|
33
33
|
def self.has_configured_vars?(remote_name, var)
|
|
34
34
|
File.foreach(RECORDER).any? do |line|
|
|
35
|
-
line =~ /^config:add #{var}=.+ --remote
|
|
35
|
+
line =~ /^config:add #{var}=.+ --remote #{remote_name}\n$/
|
|
36
36
|
end
|
|
37
37
|
end
|
|
38
38
|
end
|
data/templates/Gemfile.erb
CHANGED
|
@@ -12,7 +12,7 @@ gem "high_voltage"
|
|
|
12
12
|
gem "i18n-tasks"
|
|
13
13
|
gem "jquery-rails"
|
|
14
14
|
gem "neat", "~> 1.5.1"
|
|
15
|
-
gem "newrelic_rpm"
|
|
15
|
+
gem "newrelic_rpm"
|
|
16
16
|
gem "normalize-rails", "~> 3.0.0"
|
|
17
17
|
gem "pg"
|
|
18
18
|
gem "rack-timeout"
|
|
@@ -25,6 +25,7 @@ gem "uglifier"
|
|
|
25
25
|
gem "unicorn"
|
|
26
26
|
|
|
27
27
|
group :development do
|
|
28
|
+
gem "bundler-audit"
|
|
28
29
|
gem "spring"
|
|
29
30
|
gem "spring-commands-rspec"
|
|
30
31
|
end
|
data/templates/bin_setup.erb
CHANGED
|
@@ -7,10 +7,7 @@
|
|
|
7
7
|
set -e
|
|
8
8
|
|
|
9
9
|
# Set up Ruby dependencies via Bundler
|
|
10
|
-
|
|
11
|
-
gem install bundler --no-document
|
|
12
|
-
fi
|
|
13
|
-
|
|
10
|
+
bundle --version &> /dev/null || gem install bundler --no-document
|
|
14
11
|
bundle install
|
|
15
12
|
|
|
16
13
|
# Set up configurable environment variables
|
data/templates/rack_timeout.rb
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Rack::Timeout.timeout = (ENV["
|
|
1
|
+
Rack::Timeout.timeout = (ENV["RACK_TIMEOUT"] || 10).to_i
|
data/templates/unicorn.rb
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# https://devcenter.heroku.com/articles/rails-unicorn
|
|
2
2
|
|
|
3
|
-
worker_processes (ENV["
|
|
4
|
-
timeout (ENV["
|
|
3
|
+
worker_processes (ENV["UNICORN_WORKERS"] || 3).to_i
|
|
4
|
+
timeout (ENV["UNICORN_TIMEOUT"] || 15).to_i
|
|
5
5
|
preload_app true
|
|
6
6
|
|
|
7
7
|
before_fork do |server, worker|
|
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.19.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- thoughtbot
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2014-
|
|
11
|
+
date: 2014-11-23 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bitters
|
|
@@ -44,14 +44,14 @@ dependencies:
|
|
|
44
44
|
requirements:
|
|
45
45
|
- - '='
|
|
46
46
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: 4.1.
|
|
47
|
+
version: 4.1.8
|
|
48
48
|
type: :runtime
|
|
49
49
|
prerelease: false
|
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
51
|
requirements:
|
|
52
52
|
- - '='
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
|
-
version: 4.1.
|
|
54
|
+
version: 4.1.8
|
|
55
55
|
- !ruby/object:Gem::Dependency
|
|
56
56
|
name: aruba
|
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -165,6 +165,7 @@ files:
|
|
|
165
165
|
- templates/application.css.scss
|
|
166
166
|
- templates/background_jobs_rspec.rb
|
|
167
167
|
- templates/bin_setup.erb
|
|
168
|
+
- templates/bundler_audit.rake
|
|
168
169
|
- templates/config_i18n_tasks.yml
|
|
169
170
|
- templates/config_locales_en.yml.erb
|
|
170
171
|
- templates/database_cleaner_rspec.rb
|
|
@@ -199,7 +200,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
199
200
|
requirements:
|
|
200
201
|
- - ">="
|
|
201
202
|
- !ruby/object:Gem::Version
|
|
202
|
-
version: 2.1.
|
|
203
|
+
version: 2.1.4
|
|
203
204
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
204
205
|
requirements:
|
|
205
206
|
- - ">="
|
|
@@ -207,7 +208,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
207
208
|
version: '0'
|
|
208
209
|
requirements: []
|
|
209
210
|
rubyforge_project:
|
|
210
|
-
rubygems_version: 2.4.
|
|
211
|
+
rubygems_version: 2.4.2
|
|
211
212
|
signing_key:
|
|
212
213
|
specification_version: 4
|
|
213
214
|
summary: Generate a Rails app using thoughtbot's best practices.
|