suspenders 1.28.0 → 1.29.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7b5c9a1f436bfb675715cd69381f374c36bbe8af
4
- data.tar.gz: 452c5dbeafa70ba43c4e320b75c74a7827208c82
3
+ metadata.gz: b1c5bbaee1a756025cd9d7682c0d3f2e0cd7681a
4
+ data.tar.gz: c01b10195b95bbcda715f73bb10e4e55311f6ec2
5
5
  SHA512:
6
- metadata.gz: 2523526b87854cd8b9136cc900b0ad6b97c73b5db802e7ba9ced1405ac9c0cd4c02511bb685bbf7ef8e4544832ec567c0db5c15ce334c899e645d259998ffaba
7
- data.tar.gz: a82acee4b6d591536bd50a5ec8add13967938aa5de2c9c9c7fd4c19b0c77fc4aebb3b52036d2a9d07ba31cfd01ef86bb5fc1b6a06046072d60d50b0d8a5851ae
6
+ metadata.gz: 9678004a0610ec1aa35d4829870da67dbe3d64c69a90822223c11faa1cd5b1fa9c8ee75b77b0a927313752bb13286aa72d098817f335568ccdab6712e2e6f925
7
+ data.tar.gz: 626aaecb11ce0f0f02ed50add9d214f41af8ef5b6c1885b8d2b7d4eeec3d2958bd1780bdf41837dd5eb812816148e62252b06ba8398889b0032ad38cfdd69f8f
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- suspenders (1.27.0)
4
+ suspenders (1.29.0)
5
5
  bitters (~> 1.0.0)
6
6
  bundler (~> 1.3)
7
7
  rails (= 4.2.1)
@@ -49,35 +49,27 @@ GEM
49
49
  bourbon (>= 3.2)
50
50
  sass (>= 3.2)
51
51
  thor
52
- bourbon (4.2.2)
52
+ bourbon (4.2.3)
53
53
  sass (~> 3.4)
54
54
  thor
55
55
  builder (3.2.2)
56
- capybara (2.3.0)
57
- mime-types (>= 1.16)
58
- nokogiri (>= 1.3.3)
59
- rack (>= 1.0.0)
60
- rack-test (>= 0.5.4)
61
- xpath (~> 2.0)
62
56
  diff-lcs (1.2.5)
63
57
  erubis (2.7.0)
64
58
  globalid (0.3.5)
65
59
  activesupport (>= 4.1.0)
66
- hike (1.2.3)
67
60
  i18n (0.7.0)
68
- json (1.8.2)
69
- loofah (2.0.1)
61
+ json (1.8.3)
62
+ loofah (2.0.2)
70
63
  nokogiri (>= 1.5.9)
71
64
  mail (2.6.3)
72
65
  mime-types (>= 1.16, < 3)
73
- mime-types (2.4.3)
74
- mini_portile (0.6.0)
75
- minitest (5.5.1)
76
- multi_json (1.11.0)
77
- nokogiri (1.6.2.1)
78
- mini_portile (= 0.6.0)
79
- rack (1.6.0)
80
- rack-test (0.6.2)
66
+ mime-types (2.6.1)
67
+ mini_portile (0.6.2)
68
+ minitest (5.7.0)
69
+ nokogiri (1.6.6.2)
70
+ mini_portile (~> 0.6.0)
71
+ rack (1.6.1)
72
+ rack-test (0.6.3)
81
73
  rack (>= 1.0)
82
74
  rails (4.2.1)
83
75
  actionmailer (= 4.2.1)
@@ -104,36 +96,37 @@ GEM
104
96
  rake (>= 0.8.7)
105
97
  thor (>= 0.18.1, < 2.0)
106
98
  rake (10.4.2)
107
- rspec (2.99.0)
108
- rspec-core (~> 2.99.0)
109
- rspec-expectations (~> 2.99.0)
110
- rspec-mocks (~> 2.99.0)
111
- rspec-core (2.99.0)
112
- rspec-expectations (2.99.0)
113
- diff-lcs (>= 1.1.3, < 2.0)
114
- rspec-mocks (2.99.0)
115
- sass (3.4.13)
116
- sprockets (2.12.3)
117
- hike (~> 1.2)
118
- multi_json (~> 1.0)
99
+ rspec (3.2.0)
100
+ rspec-core (~> 3.2.0)
101
+ rspec-expectations (~> 3.2.0)
102
+ rspec-mocks (~> 3.2.0)
103
+ rspec-core (3.2.3)
104
+ rspec-support (~> 3.2.0)
105
+ rspec-expectations (3.2.1)
106
+ diff-lcs (>= 1.2.0, < 2.0)
107
+ rspec-support (~> 3.2.0)
108
+ rspec-mocks (3.2.1)
109
+ diff-lcs (>= 1.2.0, < 2.0)
110
+ rspec-support (~> 3.2.0)
111
+ rspec-support (3.2.2)
112
+ sass (3.4.14)
113
+ sprockets (3.2.0)
119
114
  rack (~> 1.0)
120
- tilt (~> 1.1, != 1.3.0)
121
- sprockets-rails (2.2.4)
115
+ sprockets-rails (2.3.1)
122
116
  actionpack (>= 3.0)
123
117
  activesupport (>= 3.0)
124
118
  sprockets (>= 2.8, < 4.0)
125
119
  thor (0.19.1)
126
120
  thread_safe (0.3.5)
127
- tilt (1.4.1)
128
121
  tzinfo (1.2.2)
129
122
  thread_safe (~> 0.1)
130
- xpath (2.0.0)
131
- nokogiri (~> 1.3)
132
123
 
133
124
  PLATFORMS
134
125
  ruby
135
126
 
136
127
  DEPENDENCIES
137
- capybara (~> 2.2, >= 2.2.0)
138
- rspec (~> 2.0)
128
+ rspec (~> 3.2)
139
129
  suspenders!
130
+
131
+ BUNDLED WITH
132
+ 1.10.4
data/NEWS.md CHANGED
@@ -1,3 +1,10 @@
1
+ 1.29.0 (June 16, 2015)
2
+
3
+ * Generate rake, rails and rspec binstubs with Spring
4
+ * Remove Capybara and use RSpec 3.2 for development
5
+ * Improves suspenders' test suite speed
6
+ * Refills `flashes.scss` bugfix
7
+
1
8
  1.28.0 (May 9, 2015)
2
9
 
3
10
  * Require spec/support files in a certain order
data/README.md CHANGED
@@ -97,7 +97,8 @@ Suspenders also comes with:
97
97
  * [t() and l() in specs without prefixing with I18n][i18n]
98
98
  * An automatically-created `SECRET_KEY_BASE` environment variable in all
99
99
  environments
100
- * Configuration for [Travis Pro][travis] continuous integration
100
+ * Configuration for [Travis][travis] Continuous Integration (tests)
101
+ * Configuration for [Hound][hound] Continuous Integration (style)
101
102
  * The analytics adapter [Segment][segment] (and therefore config for Google
102
103
  Analytics, Intercom, Facebook Ads, Twitter Ads, etc.)
103
104
 
@@ -107,6 +108,7 @@ Suspenders also comes with:
107
108
  [binstub]: https://github.com/thoughtbot/suspenders/pull/282
108
109
  [i18n]: https://github.com/thoughtbot/suspenders/pull/304
109
110
  [travis]: http://docs.travis-ci.com/user/travis-pro/
111
+ [hound]: https://houndci.com
110
112
  [segment]: https://segment.com
111
113
 
112
114
  ## Heroku
@@ -157,6 +159,14 @@ This has the same effect as running:
157
159
 
158
160
  hub create organization/project
159
161
 
162
+ ## Spring
163
+
164
+ Suspenders uses [spring](https://github.com/rails/spring) by default.
165
+ It makes Rails applications load faster, but it might introduce confusing issues
166
+ around stale code not being refreshed.
167
+ If you think your application is running old code, run `spring stop`.
168
+ And if you'd rather not use spring, add `DISABLE_SPRING=1` to your login file.
169
+
160
170
  ## Dependencies
161
171
 
162
172
  Suspenders requires the latest version of Ruby.
@@ -58,6 +58,10 @@ module Suspenders
58
58
  copy_file 'factory_girl_rspec.rb', 'spec/support/factory_girl.rb'
59
59
  end
60
60
 
61
+ def set_up_hound
62
+ copy_file "hound.yml", ".hound.yml"
63
+ end
64
+
61
65
  def configure_newrelic
62
66
  template 'newrelic.yml.erb', 'config/newrelic.yml'
63
67
  end
@@ -289,6 +293,12 @@ Rack::Timeout.timeout = (ENV["RACK_TIMEOUT"] || 10).to_i
289
293
  "app/assets/stylesheets/application.scss"
290
294
  end
291
295
 
296
+ def install_refills
297
+ run "rails generate refills:import flashes"
298
+ run "rm app/views/refills/_flashes.html.erb"
299
+ run "rmdir app/views/refills"
300
+ end
301
+
292
302
  def install_bitters
293
303
  run "bitters install --path app/assets/stylesheets"
294
304
  end
@@ -401,6 +411,10 @@ you can deploy to staging and production with:
401
411
  append_file "Rakefile", %{\ntask default: "bundler:audit"\n}
402
412
  end
403
413
 
414
+ def setup_spring
415
+ bundle_command "exec spring binstub --all"
416
+ end
417
+
404
418
  def copy_miscellaneous_files
405
419
  copy_file "browserslist", "browserslist"
406
420
  copy_file "errors.rb", "config/initializers/errors.rb"
@@ -40,6 +40,7 @@ module Suspenders
40
40
  invoke :configure_app
41
41
  invoke :setup_stylesheets
42
42
  invoke :install_bitters
43
+ invoke :install_refills
43
44
  invoke :copy_miscellaneous_files
44
45
  invoke :customize_error_pages
45
46
  invoke :remove_routes_comment_lines
@@ -49,6 +50,7 @@ module Suspenders
49
50
  invoke :create_github_repo
50
51
  invoke :setup_segment
51
52
  invoke :setup_bundler_audit
53
+ invoke :setup_spring
52
54
  invoke :outro
53
55
  end
54
56
 
@@ -87,6 +89,7 @@ module Suspenders
87
89
  def setup_test_environment
88
90
  say 'Setting up the test environment'
89
91
  build :set_up_factory_girl_for_rspec
92
+ build :set_up_hound
90
93
  build :generate_rspec
91
94
  build :configure_rspec
92
95
  build :configure_background_jobs_for_rspec
@@ -149,6 +152,11 @@ module Suspenders
149
152
  build :install_bitters
150
153
  end
151
154
 
155
+ def install_refills
156
+ say "Install Refills"
157
+ build :install_refills
158
+ end
159
+
152
160
  def setup_git
153
161
  if !options[:skip_git]
154
162
  say 'Initializing git'
@@ -189,6 +197,11 @@ module Suspenders
189
197
  build :setup_bundler_audit
190
198
  end
191
199
 
200
+ def setup_spring
201
+ say "Springifying binstubs"
202
+ build :setup_spring
203
+ end
204
+
192
205
  def init_git
193
206
  build :init_git
194
207
  end
@@ -1,5 +1,5 @@
1
1
  module Suspenders
2
2
  RAILS_VERSION = "4.2.1"
3
3
  RUBY_VERSION = IO.read("#{File.dirname(__FILE__)}/../../.ruby-version").strip
4
- VERSION = "1.28.0"
4
+ VERSION = "1.29.0"
5
5
  end
@@ -1,7 +1,12 @@
1
- require 'spec_helper'
1
+ require "spec_helper"
2
2
 
3
- feature 'GitHub' do
4
- scenario 'Suspend a project with --github option' do
3
+ RSpec.describe "GitHub" do
4
+ before do
5
+ drop_dummy_database
6
+ remove_project_directory
7
+ end
8
+
9
+ it "suspends a project with --github option" do
5
10
  repo_name = 'test'
6
11
  run_suspenders("--github=#{repo_name}")
7
12
 
@@ -1,7 +1,12 @@
1
1
  require "spec_helper"
2
2
 
3
- feature "Heroku" do
4
- scenario "Suspend a project for Heroku" do
3
+ RSpec.describe "Heroku" do
4
+ before do
5
+ drop_dummy_database
6
+ remove_project_directory
7
+ end
8
+
9
+ it "suspends a project for Heroku" do
5
10
  run_suspenders("--heroku=true")
6
11
 
7
12
  expect(FakeHeroku).to(
@@ -32,7 +37,7 @@ feature "Heroku" do
32
37
  expect(readme).to include("./bin/deploy production")
33
38
  end
34
39
 
35
- scenario "Suspend a project with extra Heroku flags" do
40
+ it "suspends a project with extra Heroku flags" do
36
41
  run_suspenders(%{--heroku=true --heroku-flags="--region eu"})
37
42
 
38
43
  expect(FakeHeroku).to have_created_app_for("staging", "--region eu")
@@ -1,9 +1,13 @@
1
- require 'spec_helper'
1
+ require "spec_helper"
2
2
 
3
- feature 'Suspend a new project with default configuration' do
4
- scenario 'specs pass' do
3
+ RSpec.describe "Suspend a new project with default configuration" do
4
+ before(:all) do
5
+ drop_dummy_database
6
+ remove_project_directory
5
7
  run_suspenders
8
+ end
6
9
 
10
+ it "ensures project specs pass" do
7
11
  Dir.chdir(project_path) do
8
12
  Bundler.with_clean_env do
9
13
  expect(`rake`).to include('0 failures')
@@ -11,9 +15,7 @@ feature 'Suspend a new project with default configuration' do
11
15
  end
12
16
  end
13
17
 
14
- scenario 'staging config is inherited from production' do
15
- run_suspenders
16
-
18
+ it "inherits staging config from production" do
17
19
  staging_file = IO.read("#{project_path}/config/environments/staging.rb")
18
20
  config_stub = "Rails.application.configure do"
19
21
 
@@ -21,37 +23,33 @@ feature 'Suspend a new project with default configuration' do
21
23
  expect(staging_file).to match(/#{config_stub}/), staging_file
22
24
  end
23
25
 
24
- scenario 'generated .ruby-version is pulled from Suspenders .ruby-version' do
25
- run_suspenders
26
-
26
+ it "creates .ruby-version from Suspenders .ruby-version" do
27
27
  ruby_version_file = IO.read("#{project_path}/.ruby-version")
28
28
 
29
29
  expect(ruby_version_file).to eq "#{RUBY_VERSION}\n"
30
30
  end
31
31
 
32
- scenario 'secrets.yml reads secret from env' do
33
- run_suspenders
34
-
32
+ it "loads secret_key_base from env" do
35
33
  secrets_file = IO.read("#{project_path}/config/secrets.yml")
36
34
 
37
35
  expect(secrets_file).to match(/secret_key_base: <%= ENV\["SECRET_KEY_BASE"\] %>/)
38
36
  end
39
37
 
40
- scenario 'action mailer support file is added' do
41
- run_suspenders
42
-
38
+ it "adds support file for action mailer" do
43
39
  expect(File).to exist("#{project_path}/spec/support/action_mailer.rb")
44
40
  end
45
41
 
46
- scenario "i18n support file is added" do
47
- run_suspenders
48
-
42
+ it "adds support file for i18n" do
49
43
  expect(File).to exist("#{project_path}/spec/support/i18n.rb")
50
44
  end
51
45
 
52
- scenario 'newrelic.yml reads NewRelic license from env' do
53
- run_suspenders
46
+ it "creates good default .hound.yml" do
47
+ hound_config_file = IO.read("#{project_path}/.hound.yml")
48
+
49
+ expect(hound_config_file).to include "enabled: true"
50
+ end
54
51
 
52
+ it "ensures newrelic.yml reads NewRelic license from env" do
55
53
  newrelic_file = IO.read("#{project_path}/config/newrelic.yml")
56
54
 
57
55
  expect(newrelic_file).to match(
@@ -59,18 +57,14 @@ feature 'Suspend a new project with default configuration' do
59
57
  )
60
58
  end
61
59
 
62
- scenario 'records pageviews through Segment if ENV variable set' do
63
- run_suspenders
64
-
60
+ it "records pageviews through Segment if ENV variable set" do
65
61
  expect(analytics_partial).
66
62
  to include(%{<% if ENV["SEGMENT_KEY"] %>})
67
63
  expect(analytics_partial).
68
64
  to include(%{window.analytics.load("<%= ENV["SEGMENT_KEY"] %>");})
69
65
  end
70
66
 
71
- scenario "raises on unpermitted parameters in all environments" do
72
- run_suspenders
73
-
67
+ it "raises on unpermitted parameters in all environments" do
74
68
  result = IO.read("#{project_path}/config/application.rb")
75
69
 
76
70
  expect(result).to match(
@@ -78,9 +72,7 @@ feature 'Suspend a new project with default configuration' do
78
72
  )
79
73
  end
80
74
 
81
- scenario "raises on missing translations in development and test" do
82
- run_suspenders
83
-
75
+ it "raises on missing translations in development and test" do
84
76
  %w[development test].each do |environment|
85
77
  environment_file =
86
78
  IO.read("#{project_path}/config/environments/#{environment}.rb")
@@ -90,44 +82,32 @@ feature 'Suspend a new project with default configuration' do
90
82
  end
91
83
  end
92
84
 
93
- scenario "specs for missing or unused translations" do
94
- run_suspenders
95
-
85
+ it "adds specs for missing or unused translations" do
96
86
  expect(File).to exist("#{project_path}/spec/i18n_spec.rb")
97
87
  end
98
88
 
99
- scenario "config file for i18n tasks" do
100
- run_suspenders
101
-
89
+ it "configs i18n-tasks" do
102
90
  expect(File).to exist("#{project_path}/config/i18n-tasks.yml")
103
91
  end
104
92
 
105
- scenario "generated en.yml is evaluated" do
106
- run_suspenders
107
-
93
+ it "evaluates en.yml.erb" do
108
94
  locales_en_file = IO.read("#{project_path}/config/locales/en.yml")
109
95
  app_name = SuspendersTestHelpers::APP_NAME
110
96
 
111
97
  expect(locales_en_file).to match(/application: #{app_name.humanize}/)
112
98
  end
113
99
 
114
- scenario "config simple_form" do
115
- run_suspenders
116
-
100
+ it "configs simple_form" do
117
101
  expect(File).to exist("#{project_path}/config/initializers/simple_form.rb")
118
102
  end
119
103
 
120
- scenario "config :test email delivery method for development" do
121
- run_suspenders
122
-
104
+ it "configs :test email delivery method for development" do
123
105
  dev_env_file = IO.read("#{project_path}/config/environments/development.rb")
124
106
  expect(dev_env_file).
125
107
  to match(/^ +config.action_mailer.delivery_method = :test$/)
126
108
  end
127
109
 
128
- scenario "config active job queue adapter" do
129
- run_suspenders
130
-
110
+ it "configs active job queue adapter" do
131
111
  application_config = IO.read("#{project_path}/config/application.rb")
132
112
  test_config = IO.read("#{project_path}/config/environments/test.rb")
133
113
 
@@ -139,6 +119,16 @@ feature 'Suspend a new project with default configuration' do
139
119
  )
140
120
  end
141
121
 
122
+ it "adds spring to binstubs" do
123
+ expect(File).to exist("#{project_path}/bin/spring")
124
+
125
+ spring_line = /^ +load File.expand_path\("\.\.\/spring", __FILE__\)$/
126
+ bin_stubs = %w(rake rails rspec)
127
+ bin_stubs.each do |bin_stub|
128
+ expect(IO.read("#{project_path}/bin/#{bin_stub}")).to match(spring_line)
129
+ end
130
+ end
131
+
142
132
  def analytics_partial
143
133
  IO.read("#{project_path}/app/views/application/_analytics.html.erb")
144
134
  end
@@ -1,4 +1,3 @@
1
- require 'capybara/rspec'
2
1
  require 'bundler/setup'
3
2
 
4
3
  Bundler.require(:default, :test)
@@ -15,9 +14,6 @@ RSpec.configure do |config|
15
14
  end
16
15
 
17
16
  config.before(:each) do
18
- drop_dummy_database
19
- remove_project_directory
20
-
21
17
  FakeHeroku.clear!
22
18
  FakeGithub.clear!
23
19
  end
@@ -31,6 +31,5 @@ rush to build something amazing; don't use it if you like missing deadlines.
31
31
  s.add_dependency 'bundler', '~> 1.3'
32
32
  s.add_dependency 'rails', Suspenders::RAILS_VERSION
33
33
 
34
- s.add_development_dependency 'rspec', '~> 2.0'
35
- s.add_development_dependency 'capybara', '~> 2.2', '>= 2.2.0'
34
+ s.add_development_dependency 'rspec', '~> 3.2'
36
35
  end
@@ -0,0 +1,17 @@
1
+ # See https://houndci.com/configuration for help.
2
+ coffeescript:
3
+ # config_file: .coffeescript-style.json
4
+ enabled: true
5
+ haml:
6
+ # config_file: .haml-style.yml
7
+ enabled: true
8
+ javascript:
9
+ # config_file: .javascript-style.json
10
+ enabled: true
11
+ # ignore_file: .javascript_ignore
12
+ ruby:
13
+ # config_file: .ruby-style.yml
14
+ enabled: true
15
+ scss:
16
+ # config_file: .scss-style.yml
17
+ enabled: true
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.28.0
4
+ version: 1.29.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - thoughtbot
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-09 00:00:00.000000000 Z
11
+ date: 2015-06-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bitters
@@ -58,34 +58,14 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '2.0'
61
+ version: '3.2'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '2.0'
69
- - !ruby/object:Gem::Dependency
70
- name: capybara
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - "~>"
74
- - !ruby/object:Gem::Version
75
- version: '2.2'
76
- - - ">="
77
- - !ruby/object:Gem::Version
78
- version: 2.2.0
79
- type: :development
80
- prerelease: false
81
- version_requirements: !ruby/object:Gem::Requirement
82
- requirements:
83
- - - "~>"
84
- - !ruby/object:Gem::Version
85
- version: '2.2'
86
- - - ">="
87
- - !ruby/object:Gem::Version
88
- version: 2.2.0
68
+ version: '3.2'
89
69
  description: |
90
70
  Suspenders is a base Rails project that you can upgrade. It is used by
91
71
  thoughtbot to get a jump start on a working app. Use Suspenders if you're in a
@@ -147,6 +127,7 @@ files:
147
127
  - templates/errors.rb
148
128
  - templates/factory_girl_rspec.rb
149
129
  - templates/flashes_helper.rb
130
+ - templates/hound.yml
150
131
  - templates/i18n.rb
151
132
  - templates/json_encoding.rb
152
133
  - templates/newrelic.yml.erb