suspenders 1.24.0 → 1.25.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: 82e9404c65c3c4824d2db3c7e102887e023e1692
4
- data.tar.gz: b238f1099fbade65f4af8f56c2662c0e08aa0781
3
+ metadata.gz: 1e5b7ff219c02602303e763a6176f1b748402de9
4
+ data.tar.gz: fea4f4b9ebf8e9b6f7d4e8846603f36a702f9b09
5
5
  SHA512:
6
- metadata.gz: fe08b5239f80727c9ce77dbf75a4267d23ced284224d60a2ac02a2059909105cc3e6d453560c8aba5cd780f6f8205c1b7ca98ca6eb849b72470d28b3296a4115
7
- data.tar.gz: ad48f708d6073459abd9df2e88ddc0be91783f96f0aa8f0572b7d685e5c03cbeeb3a8e42cae98ade713cb51a12e2271f630b454959e132790185e0d2c2631762
6
+ metadata.gz: 37c7031f7dd62ca4edbf952da97f7be0cdf1a2e6842c729b0f02be89062096ef76e37edac4f2aa01f1d84a05f9c9269e0ded299e1090dff433292a29d75bc960
7
+ data.tar.gz: 038163505d91aa1b58fc258c5f77740b6f9f0eb04b3a5c647d6b052989e14e26c8089d0b114fe624dc354b5850241b9239c11d43a5e7c99f1b9a94f0cb47babb
@@ -1,6 +1,6 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 2.2.0
3
+ - 2.2.1
4
4
  before_install:
5
5
  - "echo '--colour' > ~/.rspec"
6
6
  - git config --global user.name 'Travis CI'
@@ -45,10 +45,6 @@ GEM
45
45
  thread_safe (~> 0.3, >= 0.3.4)
46
46
  tzinfo (~> 1.1)
47
47
  arel (6.0.0)
48
- aruba (0.5.4)
49
- childprocess (>= 0.3.6)
50
- cucumber (>= 1.1.1)
51
- rspec-expectations (>= 2.7.0)
52
48
  bitters (0.10.1)
53
49
  bourbon (>= 3.2)
54
50
  sass (>= 3.2)
@@ -63,19 +59,8 @@ GEM
63
59
  rack (>= 1.0.0)
64
60
  rack-test (>= 0.5.4)
65
61
  xpath (~> 2.0)
66
- childprocess (0.5.3)
67
- ffi (~> 1.0, >= 1.0.11)
68
- cucumber (1.3.15)
69
- builder (>= 2.1.2)
70
- diff-lcs (>= 1.1.3)
71
- gherkin (~> 2.12)
72
- multi_json (>= 1.7.5, < 2.0)
73
- multi_test (>= 0.1.1)
74
62
  diff-lcs (1.2.5)
75
63
  erubis (2.7.0)
76
- ffi (1.9.3)
77
- gherkin (2.12.2)
78
- multi_json (~> 1.3)
79
64
  globalid (0.3.0)
80
65
  activesupport (>= 4.1.0)
81
66
  hike (1.2.3)
@@ -89,7 +74,6 @@ GEM
89
74
  mini_portile (0.6.0)
90
75
  minitest (5.5.1)
91
76
  multi_json (1.10.1)
92
- multi_test (0.1.1)
93
77
  nokogiri (1.6.2.1)
94
78
  mini_portile (= 0.6.0)
95
79
  rack (1.6.0)
@@ -150,8 +134,6 @@ PLATFORMS
150
134
  ruby
151
135
 
152
136
  DEPENDENCIES
153
- aruba (~> 0.5)
154
137
  capybara (~> 2.2, >= 2.2.0)
155
- cucumber (~> 1.2)
156
138
  rspec (~> 2.0)
157
139
  suspenders!
data/NEWS.md CHANGED
@@ -1,3 +1,16 @@
1
+ 1.25.0 (March 7, 2015)
2
+
3
+ * Configure Active Job queue adapter for test env
4
+ * Use Ruby 2.2.1
5
+ * Dasherize heroku app names
6
+ * Update Bourbon to 4.2.0
7
+ * Add ASSET_HOST to sample.env (defaults to HOST)
8
+ * Set bin/deploy script as executable
9
+ * Set email deliver method to :test for development
10
+ * Include missing word in the Flutie description in README.
11
+ * Remove unused dev gems: aruba & cucumber
12
+ * Use skip_bundle class_option (rather than defining an empty run_bundle method)
13
+
1
14
  1.24.0 (February 3, 2015)
2
15
 
3
16
  * Remove things in Suspenders that Rails does for us now.
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # Suspenders [![Build Status](https://secure.travis-ci.org/thoughtbot/suspenders.png?branch=master)](http://travis-ci.org/thoughtbot/suspenders)
1
+ # Suspenders [![Build Status](https://secure.travis-ci.org/thoughtbot/suspenders.svg?branch=master)](http://travis-ci.org/thoughtbot/suspenders)
2
2
 
3
3
  Suspenders is the base Rails application used at
4
4
  [thoughtbot](http://thoughtbot.com).
@@ -32,8 +32,8 @@ It includes application gems like:
32
32
  processing
33
33
  * [Email Validator](https://github.com/balexand/email_validator) for email
34
34
  validation
35
- * [Flutie](https://github.com/thoughtbot/flutie) for and `body_class` view
36
- helper
35
+ * [Flutie](https://github.com/thoughtbot/flutie) for `page_title` and `body_class` view
36
+ helpers
37
37
  * [High Voltage](https://github.com/thoughtbot/high_voltage) for static pages
38
38
  * [jQuery Rails](https://github.com/rails/jquery-rails) for jQuery
39
39
  * [Neat](https://github.com/thoughtbot/neat) for semantic grids
@@ -14,6 +14,14 @@ module Suspenders
14
14
  configure_environment(rails_env, config)
15
15
  end
16
16
 
17
+ def configure_application_file(config)
18
+ inject_into_file(
19
+ "config/application.rb",
20
+ "\n\n #{config}",
21
+ before: "\n end"
22
+ )
23
+ end
24
+
17
25
  def configure_environment(rails_env, config)
18
26
  inject_into_file(
19
27
  "config/environments/#{rails_env}.rb",
@@ -11,6 +11,14 @@ module Suspenders
11
11
  'raise_delivery_errors = false', 'raise_delivery_errors = true'
12
12
  end
13
13
 
14
+ def set_test_delivery_method
15
+ inject_into_file(
16
+ "config/environments/development.rb",
17
+ "\n config.action_mailer.delivery_method = :test",
18
+ after: "config.action_mailer.raise_delivery_errors = true",
19
+ )
20
+ end
21
+
14
22
  def raise_on_unpermitted_parameters
15
23
  config = <<-RUBY
16
24
  config.action_controller.action_on_unpermitted_parameters = :raise
@@ -87,7 +95,7 @@ module Suspenders
87
95
  def setup_asset_host
88
96
  replace_in_file 'config/environments/production.rb',
89
97
  "# config.action_controller.asset_host = 'http://assets.example.com'",
90
- 'config.action_controller.asset_host = ENV.fetch("ASSET_HOST")'
98
+ 'config.action_controller.asset_host = ENV.fetch("ASSET_HOST", ENV.fetch("HOST"))'
91
99
 
92
100
  replace_in_file 'config/initializers/assets.rb',
93
101
  "config.assets.version = '1.0'",
@@ -201,7 +209,6 @@ end
201
209
  end
202
210
 
203
211
  def configure_background_jobs_for_rspec
204
- copy_file 'background_jobs_rspec.rb', 'spec/support/background_jobs.rb'
205
212
  run 'rails g delayed_job:active_record'
206
213
  end
207
214
 
@@ -229,6 +236,13 @@ end
229
236
  action_mailer_host "production", %{ENV.fetch("HOST")}
230
237
  end
231
238
 
239
+ def configure_active_job
240
+ configure_application_file(
241
+ "config.active_job.queue_adapter = :delayed_job"
242
+ )
243
+ configure_environment "test", "config.active_job.queue_adapter = :inline"
244
+ end
245
+
232
246
  def fix_i18n_deprecation_warning
233
247
  config = <<-RUBY
234
248
  config.i18n.enforce_available_locales = true
@@ -285,14 +299,23 @@ end
285
299
  run 'git init'
286
300
  end
287
301
 
288
- def create_heroku_apps(flags)
302
+ def create_staging_heroku_app(flags)
289
303
  rack_env = "RACK_ENV=staging RAILS_ENV=staging"
290
- rails_serve_static_files = "RAILS_SERVE_STATIC_FILES=true"
291
- staging_config = "#{rack_env} #{rails_serve_static_files}"
292
- run_heroku "create #{app_name}-production #{flags}", "production"
293
- run_heroku "create #{app_name}-staging #{flags}", "staging"
294
- run_heroku "config:add #{staging_config}", "staging"
295
- run_heroku "config:add #{rails_serve_static_files}", "production"
304
+ app_name = heroku_app_name_for("staging")
305
+
306
+ run_heroku "create #{app_name} #{flags}", "staging"
307
+ run_heroku "config:add #{rack_env}", "staging"
308
+ end
309
+
310
+ def create_production_heroku_app(flags)
311
+ app_name = heroku_app_name_for("production")
312
+
313
+ run_heroku "create #{app_name} #{flags}", "production"
314
+ end
315
+
316
+ def create_heroku_apps(flags)
317
+ create_staging_heroku_app(flags)
318
+ create_production_heroku_app(flags)
296
319
  end
297
320
 
298
321
  def set_heroku_remotes
@@ -307,7 +330,7 @@ end
307
330
  end
308
331
 
309
332
  def join_heroku_app(environment)
310
- heroku_app_name = "#{app_name}-#{environment}"
333
+ heroku_app_name = heroku_app_name_for(environment)
311
334
  <<-SHELL
312
335
  if heroku join --app #{heroku_app_name} &> /dev/null; then
313
336
  git remote add #{environment} git@heroku.com:#{heroku_app_name}.git || true
@@ -324,12 +347,18 @@ fi
324
347
  end
325
348
  end
326
349
 
327
- def set_memory_management_variable
350
+ def set_heroku_memory_management_variable
328
351
  %w(staging production).each do |environment|
329
352
  run_heroku "config:add NEW_RELIC_AGGRESSIVE_KEEPALIVE=1", environment
330
353
  end
331
354
  end
332
355
 
356
+ def set_heroku_serve_static_files
357
+ %w(staging production).each do |environment|
358
+ run_heroku "config:add RAILS_SERVE_STATIC_FILES=true", environment
359
+ end
360
+ end
361
+
333
362
  def provide_deploy_script
334
363
  copy_file "bin_deploy", "bin/deploy"
335
364
 
@@ -345,6 +374,7 @@ you can deploy to staging and production with:
345
374
  MARKDOWN
346
375
 
347
376
  append_file "README.md", instructions
377
+ run "chmod a+x bin/deploy"
348
378
  end
349
379
 
350
380
  def create_github_repo(repo_name)
@@ -437,5 +467,9 @@ end
437
467
  def serve_static_files_line
438
468
  "config.serve_static_files = ENV['RAILS_SERVE_STATIC_FILES'].present?\n"
439
469
  end
470
+
471
+ def heroku_app_name_for(environment)
472
+ "#{app_name.dasherize}-#{environment}"
473
+ end
440
474
  end
441
475
  end
@@ -21,6 +21,9 @@ module Suspenders
21
21
  class_option :skip_turbolinks, type: :boolean, default: true,
22
22
  desc: "Skip turbolinks gem"
23
23
 
24
+ class_option :skip_bundle, type: :boolean, aliases: "-B", default: true,
25
+ desc: "Don't run bundle install"
26
+
24
27
  def finish_template
25
28
  invoke :suspenders_customization
26
29
  super
@@ -74,6 +77,7 @@ module Suspenders
74
77
  def setup_development_environment
75
78
  say 'Setting up the development environment'
76
79
  build :raise_on_delivery_errors
80
+ build :set_test_delivery_method
77
81
  build :raise_on_unpermitted_parameters
78
82
  build :provide_setup_script
79
83
  build :provide_dev_prime_task
@@ -124,6 +128,7 @@ module Suspenders
124
128
  def configure_app
125
129
  say 'Configuring app'
126
130
  build :configure_action_mailer
131
+ build :configure_active_job
127
132
  build :configure_time_formats
128
133
  build :configure_rack_timeout
129
134
  build :configure_simple_form
@@ -161,9 +166,10 @@ module Suspenders
161
166
  if options[:heroku]
162
167
  say "Creating Heroku apps"
163
168
  build :create_heroku_apps, options[:heroku_flags]
169
+ build :set_heroku_serve_static_files
164
170
  build :set_heroku_remotes
165
171
  build :set_heroku_rails_secrets
166
- build :set_memory_management_variable
172
+ build :set_heroku_memory_management_variable
167
173
  build :provide_deploy_script
168
174
  end
169
175
  end
@@ -212,10 +218,6 @@ module Suspenders
212
218
  say "Remember to run 'rails generate airbrake' with your API key."
213
219
  end
214
220
 
215
- def run_bundle
216
- # Let's not: We'll bundle manually at the right spot
217
- end
218
-
219
221
  protected
220
222
 
221
223
  def get_builder_class
@@ -1,5 +1,5 @@
1
1
  module Suspenders
2
2
  RAILS_VERSION = "4.2.0"
3
3
  RUBY_VERSION = IO.read("#{File.dirname(__FILE__)}/../../.ruby-version").strip
4
- VERSION = "1.24.0"
4
+ VERSION = "1.25.0"
5
5
  end
@@ -4,22 +4,27 @@ feature "Heroku" do
4
4
  scenario "Suspend a project for Heroku" do
5
5
  run_suspenders("--heroku=true")
6
6
 
7
- expect(FakeHeroku).
8
- to have_gem_included(project_path, "rails_stdout_logging")
7
+ expect(FakeHeroku).to(
8
+ have_gem_included(project_path, "rails_stdout_logging")
9
+ )
9
10
  expect(FakeHeroku).to have_created_app_for("staging")
10
11
  expect(FakeHeroku).to have_created_app_for("production")
11
12
  expect(FakeHeroku).to have_configured_vars("staging", "SECRET_KEY_BASE")
12
13
  expect(FakeHeroku).to have_configured_vars("production", "SECRET_KEY_BASE")
13
14
 
14
- bin_setup = IO.read("#{project_path}/bin/setup")
15
- app_name = SuspendersTestHelpers::APP_NAME
15
+ bin_setup_path = "#{project_path}/bin/setup"
16
+ bin_setup = IO.read(bin_setup_path)
17
+ app_name = SuspendersTestHelpers::APP_NAME.dasherize
16
18
 
17
- expect(bin_setup).to include("heroku join --app #{app_name}-staging")
18
19
  expect(bin_setup).to include("heroku join --app #{app_name}-production")
20
+ expect(bin_setup).to include("heroku join --app #{app_name}-staging")
21
+ expect(File.stat(bin_setup_path)).to be_executable
19
22
 
20
- bin_deploy = IO.read("#{project_path}/bin/deploy")
23
+ bin_deploy_path = "#{project_path}/bin/deploy"
24
+ bin_deploy = IO.read(bin_deploy_path)
21
25
 
22
26
  expect(bin_deploy).to include("heroku run rake db:migrate")
27
+ expect(File.stat(bin_deploy_path)).to be_executable
23
28
 
24
29
  readme = IO.read("#{project_path}/README.md")
25
30
 
@@ -117,6 +117,28 @@ feature 'Suspend a new project with default configuration' do
117
117
  expect(File).to exist("#{project_path}/config/initializers/simple_form.rb")
118
118
  end
119
119
 
120
+ scenario "config :test email delivery method for development" do
121
+ run_suspenders
122
+
123
+ dev_env_file = IO.read("#{project_path}/config/environments/development.rb")
124
+ expect(dev_env_file).
125
+ to match(/^ +config.action_mailer.delivery_method = :test$/)
126
+ end
127
+
128
+ scenario "config active job queue adapter" do
129
+ run_suspenders
130
+
131
+ application_config = IO.read("#{project_path}/config/application.rb")
132
+ test_config = IO.read("#{project_path}/config/environments/test.rb")
133
+
134
+ expect(application_config).to match(
135
+ /^ +config.active_job.queue_adapter = :delayed_job$/
136
+ )
137
+ expect(test_config).to match(
138
+ /^ +config.active_job.queue_adapter = :inline$/
139
+ )
140
+ end
141
+
120
142
  def analytics_partial
121
143
  IO.read("#{project_path}/app/views/application/_analytics.html.erb")
122
144
  end
@@ -23,16 +23,16 @@ class FakeHeroku
23
23
  end
24
24
  end
25
25
 
26
- def self.has_created_app_for?(remote_name, flags = nil)
27
- app_name = "#{SuspendersTestHelpers::APP_NAME}-#{remote_name}"
26
+ def self.has_created_app_for?(environment, flags = nil)
27
+ app_name = "#{SuspendersTestHelpers::APP_NAME.dasherize}-#{environment}"
28
28
 
29
- expected_line = if flags
30
- "create #{app_name} #{flags} --remote #{remote_name}\n"
31
- else
32
- "create #{app_name} --remote #{remote_name}\n"
33
- end
29
+ command = if flags
30
+ "create #{app_name} #{flags} --remote #{environment}\n"
31
+ else
32
+ "create #{app_name} --remote #{environment}\n"
33
+ end
34
34
 
35
- File.foreach(RECORDER).any? { |line| line == expected_line }
35
+ File.foreach(RECORDER).any? { |line| line == command }
36
36
  end
37
37
 
38
38
  def self.has_configured_vars?(remote_name, var)
@@ -1,5 +1,5 @@
1
1
  module SuspendersTestHelpers
2
- APP_NAME = 'dummy'
2
+ APP_NAME = "dummy_app"
3
3
 
4
4
  def remove_project_directory
5
5
  FileUtils.rm_rf(project_path)
@@ -31,8 +31,6 @@ 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 'aruba', '~> 0.5'
35
- s.add_development_dependency 'cucumber', '~> 1.2'
36
34
  s.add_development_dependency 'rspec', '~> 2.0'
37
35
  s.add_development_dependency 'capybara', '~> 2.2', '>= 2.2.0'
38
36
  end
@@ -3,7 +3,7 @@ source "https://rubygems.org"
3
3
  ruby "<%= Suspenders::RUBY_VERSION %>"
4
4
 
5
5
  gem "airbrake"
6
- gem "bourbon", "~> 4.1.0"
6
+ gem "bourbon", "~> 4.2.0"
7
7
  gem "coffee-rails", "~> 4.1.0"
8
8
  gem "delayed_job_active_record"
9
9
  gem "email_validator"
@@ -7,7 +7,7 @@ RSpec.configure do |config|
7
7
  DatabaseCleaner.strategy = :transaction
8
8
  end
9
9
 
10
- config.before(:each, :js => true) do
10
+ config.before(:each, js: true) do
11
11
  DatabaseCleaner.strategy = :deletion
12
12
  end
13
13
 
@@ -1,3 +1,5 @@
1
1
  # http://ddollar.github.com/foreman/
2
+ ASSET_HOST=localhost:3000
3
+ HOST=localhost:3000
2
4
  RACK_ENV=development
3
5
  SECRET_KEY_BASE=development_secret
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.24.0
4
+ version: 1.25.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-02-03 00:00:00.000000000 Z
11
+ date: 2015-03-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bitters
@@ -52,34 +52,6 @@ dependencies:
52
52
  - - '='
53
53
  - !ruby/object:Gem::Version
54
54
  version: 4.2.0
55
- - !ruby/object:Gem::Dependency
56
- name: aruba
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: '0.5'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: '0.5'
69
- - !ruby/object:Gem::Dependency
70
- name: cucumber
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - "~>"
74
- - !ruby/object:Gem::Version
75
- version: '1.2'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - "~>"
81
- - !ruby/object:Gem::Version
82
- version: '1.2'
83
55
  - !ruby/object:Gem::Dependency
84
56
  name: rspec
85
57
  requirement: !ruby/object:Gem::Requirement
@@ -163,7 +135,6 @@ files:
163
135
  - templates/_javascript.html.erb
164
136
  - templates/action_mailer.rb
165
137
  - templates/application.css.scss
166
- - templates/background_jobs_rspec.rb
167
138
  - templates/bin_deploy
168
139
  - templates/bin_setup.erb
169
140
  - templates/bundler_audit.rake
@@ -224,3 +195,4 @@ test_files:
224
195
  - spec/support/fake_github.rb
225
196
  - spec/support/fake_heroku.rb
226
197
  - spec/support/suspenders.rb
198
+ has_rdoc:
@@ -1,19 +0,0 @@
1
- module BackgroundJobs
2
- def run_background_jobs_immediately
3
- delay_jobs = Delayed::Worker.delay_jobs
4
- Delayed::Worker.delay_jobs = false
5
- yield
6
- ensure
7
- Delayed::Worker.delay_jobs = delay_jobs
8
- end
9
- end
10
-
11
- RSpec.configure do |config|
12
- config.around(:each, type: :feature) do |example|
13
- run_background_jobs_immediately do
14
- example.run
15
- end
16
- end
17
-
18
- config.include BackgroundJobs
19
- end