suspenders 1.28.0 → 1.29.0

Sign up to get free protection for your applications and to get access to all the features.
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