suspenders 1.35.0 → 1.36.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: 5d6e0976e91ec4917e8119de4459892b4c11f6e8
4
- data.tar.gz: f94cb991a1498ca9337f6c5b06c5445cd7ab9a47
3
+ metadata.gz: 5d921beddd38f9bd970eadbdcc901a3818eb23cc
4
+ data.tar.gz: 9714376afdfe4d02c41e56358d8aeb59e2ad7129
5
5
  SHA512:
6
- metadata.gz: 83fae0c577a776372fce11421f90f7e30a2f6dec55302638f54af395ae23a777a521b4717f6fafbfb561df229162a19d6373ec998db33c0c4e074feac858838d
7
- data.tar.gz: dc25306dcd657edbc7d300ce384fe50a97060a8b4d0848da6e09489462c39d9a9cad3bd1f27f4d14dd7576110fba3703c6653920e9ea1d29314b5252abf54f80
6
+ metadata.gz: a8e513fe32ce4e817d6e4524d1082d089e5eac7b936dd68b6ed96fadb1278bba2f25df88d7a466c00053d6693016d1821d63bc231a1c07f93d876e86d612b0b1
7
+ data.tar.gz: 63a34852741cea8ae655e6be0889967e15816605b455059f3da0ee565c4d1dec1426c4b7f68831aac827f9a17cf16b11d32d09ed00591f6fb6adf3653b0ba064
data/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License
2
2
 
3
- Copyright (c) 2008-2015 thoughtbot, inc.
3
+ Copyright (c) 2008-2016 thoughtbot, inc.
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
data/NEWS.md CHANGED
@@ -1,3 +1,12 @@
1
+ 1.36.0 (February 26, 2016)
2
+
3
+ * Update Bitters to v1.2
4
+ * Remove deprecated `fix_i18n_deprecation_warning` method
5
+ * Switch from Airbrake to Honeybadger
6
+ * Generate applications with `rack_mini_profiler` (disabled by default, enabled
7
+ by setting `RACK_MINI_PROFILER=1`)
8
+ * Heroku Pipelines bug fixes
9
+
1
10
  1.35.0 (December 30, 2015)
2
11
 
3
12
  * Introduce Heroku Pipelines support
data/README.md CHANGED
@@ -31,7 +31,6 @@ generated projectname/Gemfile.
31
31
 
32
32
  It includes application gems like:
33
33
 
34
- * [Airbrake](https://github.com/airbrake/airbrake) for exception notification
35
34
  * [Autoprefixer Rails](https://github.com/ai/autoprefixer-rails) for CSS vendor prefixes
36
35
  * [Bourbon](https://github.com/thoughtbot/bourbon) for Sass mixins
37
36
  * [Bitters](https://github.com/thoughtbot/bitters) for scaffold application styles
@@ -40,6 +39,7 @@ It includes application gems like:
40
39
  * [Flutie](https://github.com/thoughtbot/flutie) for `page_title` and `body_class` view
41
40
  helpers
42
41
  * [High Voltage](https://github.com/thoughtbot/high_voltage) for static pages
42
+ * [Honeybadger](https://honeybadger.io) for exception notification
43
43
  * [jQuery Rails](https://github.com/rails/jquery-rails) for jQuery
44
44
  * [Neat](https://github.com/thoughtbot/neat) for semantic grids
45
45
  * [New Relic RPM](https://github.com/newrelic/rpm) for monitoring performance
@@ -212,7 +212,7 @@ Thank you, [contributors]!
212
212
 
213
213
  ## License
214
214
 
215
- Suspenders is Copyright © 2008-2015 thoughtbot.
215
+ Suspenders is Copyright © 2008-2016 thoughtbot.
216
216
  It is free software,
217
217
  and may be redistributed under the terms specified in the [LICENSE] file.
218
218
 
@@ -68,12 +68,17 @@ module Suspenders
68
68
  end
69
69
 
70
70
  heroku_app_name = app_builder.app_name.dasherize
71
- %w(staging production).each do |environment|
72
- run_toolbelt_command(
73
- "pipelines:create #{heroku_app_name} -a #{heroku_app_name}-#{environment} --stage #{environment}",
74
- environment,
75
- )
76
- end
71
+ run_toolbelt_command(
72
+ "pipelines:create #{heroku_app_name} \
73
+ -a #{heroku_app_name}-staging --stage staging",
74
+ "staging",
75
+ )
76
+
77
+ run_toolbelt_command(
78
+ "pipelines:add #{heroku_app_name} \
79
+ -a #{heroku_app_name}-production --stage production",
80
+ "production",
81
+ )
77
82
  end
78
83
 
79
84
  def set_heroku_serve_static_files
@@ -20,6 +20,21 @@ module Suspenders
20
20
  template 'README.md.erb', 'README.md'
21
21
  end
22
22
 
23
+ def gitignore
24
+ copy_file "suspenders_gitignore", ".gitignore"
25
+ end
26
+
27
+ def gemfile
28
+ template "Gemfile.erb", "Gemfile"
29
+ end
30
+
31
+ def setup_rack_mini_profiler
32
+ copy_file(
33
+ "rack_mini_profiler.rb",
34
+ "config/initializers/rack_mini_profiler.rb",
35
+ )
36
+ end
37
+
23
38
  def raise_on_missing_assets_in_test
24
39
  inject_into_file(
25
40
  "config/environments/test.rb",
@@ -231,11 +246,6 @@ end
231
246
  bundle_command 'exec rake db:create db:migrate'
232
247
  end
233
248
 
234
- def replace_gemfile
235
- remove_file 'Gemfile'
236
- template 'Gemfile.erb', 'Gemfile'
237
- end
238
-
239
249
  def set_ruby_to_version_being_used
240
250
  create_file '.ruby-version', "#{Suspenders::RUBY_VERSION}\n"
241
251
  end
@@ -318,14 +328,6 @@ Rack::Timeout.timeout = (ENV["RACK_TIMEOUT"] || 10).to_i
318
328
  configure_environment "test", "config.active_job.queue_adapter = :inline"
319
329
  end
320
330
 
321
- def fix_i18n_deprecation_warning
322
- config = <<-RUBY
323
- config.i18n.enforce_available_locales = true
324
- RUBY
325
-
326
- inject_into_class 'config/application.rb', 'Application', config
327
- end
328
-
329
331
  def generate_rspec
330
332
  generate 'rspec:install'
331
333
  end
@@ -345,18 +347,15 @@ Rack::Timeout.timeout = (ENV["RACK_TIMEOUT"] || 10).to_i
345
347
  end
346
348
 
347
349
  def install_refills
348
- run "rails generate refills:import flashes"
349
- run "rm app/views/refills/_flashes.html.erb"
350
- run "rmdir app/views/refills"
350
+ generate "refills:import", "flashes"
351
+ remove_dir "app/views/refills"
351
352
  end
352
353
 
353
354
  def install_bitters
354
355
  run "bitters install --path app/assets/stylesheets"
355
356
  end
356
357
 
357
- def gitignore_files
358
- remove_file '.gitignore'
359
- copy_file 'suspenders_gitignore', '.gitignore'
358
+ def setup_default_directories
360
359
  [
361
360
  'app/views/pages',
362
361
  'spec/lib',
@@ -366,8 +365,7 @@ Rack::Timeout.timeout = (ENV["RACK_TIMEOUT"] || 10).to_i
366
365
  'spec/support/mixins',
367
366
  'spec/support/shared_examples'
368
367
  ].each do |dir|
369
- run "mkdir #{dir}"
370
- run "touch #{dir}/.keep"
368
+ empty_directory_with_keep_file dir
371
369
  end
372
370
  end
373
371
 
@@ -57,7 +57,6 @@ module Suspenders
57
57
  end
58
58
 
59
59
  def customize_gemfile
60
- build :replace_gemfile
61
60
  build :set_ruby_to_version_being_used
62
61
 
63
62
  if options[:heroku]
@@ -143,10 +142,10 @@ module Suspenders
143
142
  build :configure_active_job
144
143
  build :configure_time_formats
145
144
  build :disable_xml_params
146
- build :fix_i18n_deprecation_warning
147
145
  build :setup_default_rake_task
148
146
  build :configure_puma
149
147
  build :set_up_forego
148
+ build :setup_rack_mini_profiler
150
149
  end
151
150
 
152
151
  def setup_stylesheets
@@ -166,8 +165,8 @@ module Suspenders
166
165
 
167
166
  def setup_git
168
167
  if !options[:skip_git]
169
- say 'Initializing git'
170
- invoke :setup_gitignore
168
+ say "Initializing git"
169
+ invoke :setup_default_directories
171
170
  invoke :init_git
172
171
  end
173
172
  end
@@ -203,8 +202,8 @@ module Suspenders
203
202
  build :copy_dotfiles
204
203
  end
205
204
 
206
- def setup_gitignore
207
- build :gitignore_files
205
+ def setup_default_directories
206
+ build :setup_default_directories
208
207
  end
209
208
 
210
209
  def setup_bundler_audit
@@ -241,7 +240,7 @@ module Suspenders
241
240
 
242
241
  def outro
243
242
  say 'Congratulations! You just pulled our suspenders.'
244
- say "Remember to run 'rails generate airbrake' with your API key."
243
+ say honeybadger_outro
245
244
  end
246
245
 
247
246
  protected
@@ -253,5 +252,17 @@ module Suspenders
253
252
  def using_active_record?
254
253
  !options[:skip_active_record]
255
254
  end
255
+
256
+ private
257
+
258
+ def honeybadger_outro
259
+ "Run 'bundle exec honeybadger heroku install' with your API key#{honeybadger_message_suffix}."
260
+ end
261
+
262
+ def honeybadger_message_suffix
263
+ if options[:heroku]
264
+ " unless you're using the Heroku Honeybadger add-on"
265
+ end
266
+ end
256
267
  end
257
268
  end
@@ -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.35.0"
4
+ VERSION = "1.36.0"
5
5
  end
@@ -7,6 +7,19 @@ RSpec.describe "Suspend a new project with default configuration" do
7
7
  run_suspenders
8
8
  end
9
9
 
10
+ it "uses custom Gemfile" do
11
+ gemfile_file = IO.read("#{project_path}/Gemfile")
12
+ expect(gemfile_file).to match(
13
+ /^ruby "#{Suspenders::RUBY_VERSION}"$/,
14
+ )
15
+ expect(gemfile_file).to match(
16
+ /^gem "autoprefixer-rails"$/,
17
+ )
18
+ expect(gemfile_file).to match(
19
+ /^gem "rails", "#{Suspenders::RAILS_VERSION}"$/,
20
+ )
21
+ end
22
+
10
23
  it "ensures project specs pass" do
11
24
  Dir.chdir(project_path) do
12
25
  Bundler.with_clean_env do
@@ -69,6 +82,23 @@ RSpec.describe "Suspend a new project with default configuration" do
69
82
  expect(hound_config_file).to include "enabled: true"
70
83
  end
71
84
 
85
+ it "ensures Gemfile contains `rack-mini-profiler`" do
86
+ gemfile = IO.read("#{project_path}/Gemfile")
87
+
88
+ expect(gemfile).to include %{gem "rack-mini-profiler", require: false}
89
+ end
90
+
91
+ it "ensures .sample.env defaults to RACK_MINI_PROFILER=0" do
92
+ env = IO.read("#{project_path}/.env")
93
+
94
+ expect(env).to include "RACK_MINI_PROFILER=0"
95
+ end
96
+
97
+ it "creates a rack-mini-profiler initializer" do
98
+ expect(File).
99
+ to exist("#{project_path}/config/initializers/rack_mini_profiler.rb")
100
+ end
101
+
72
102
  it "ensures newrelic.yml reads NewRelic license from env" do
73
103
  newrelic_file = IO.read("#{project_path}/config/newrelic.yml")
74
104
 
@@ -44,7 +44,7 @@ class FakeHeroku
44
44
 
45
45
  def self.has_setup_pipeline_for?(app_name)
46
46
  commands_ran =~ /^pipelines:create #{app_name} -a #{app_name}-staging --stage staging/ &&
47
- commands_ran =~ /^pipelines:create #{app_name} -a #{app_name}-production --stage production/
47
+ commands_ran =~ /^pipelines:add #{app_name} -a #{app_name}-production --stage production/
48
48
  end
49
49
 
50
50
  def self.commands_ran
@@ -27,7 +27,7 @@ rush to build something amazing; don't use it if you like missing deadlines.
27
27
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
28
28
  s.version = Suspenders::VERSION
29
29
 
30
- s.add_dependency 'bitters', '~> 1.1.0'
30
+ s.add_dependency 'bitters', '~> 1.2'
31
31
  s.add_dependency 'bundler', '~> 1.3'
32
32
  s.add_dependency 'rails', Suspenders::RAILS_VERSION
33
33
 
@@ -2,13 +2,13 @@ source "https://rubygems.org"
2
2
 
3
3
  ruby "<%= Suspenders::RUBY_VERSION %>"
4
4
 
5
- gem "airbrake"
6
5
  gem "autoprefixer-rails"
7
6
  gem "bourbon", "~> 4.2.0"
8
7
  gem "coffee-rails", "~> 4.1.0"
9
8
  gem "delayed_job_active_record"
10
9
  gem "flutie"
11
10
  gem "high_voltage"
11
+ gem "honeybadger"
12
12
  gem "jquery-rails"
13
13
  gem "neat", "~> 1.7.0"
14
14
  gem "newrelic_rpm", ">= 3.9.8"
@@ -42,6 +42,10 @@ group :development, :test do
42
42
  gem "rspec-rails", "~> 3.4.0"
43
43
  end
44
44
 
45
+ group :development, :staging do
46
+ gem "rack-mini-profiler", require: false
47
+ end
48
+
45
49
  group :test do
46
50
  gem "capybara-webkit"
47
51
  gem "database_cleaner"
@@ -2,12 +2,18 @@
2
2
  "name":"<%= app_name.dasherize %>",
3
3
  "scripts":{},
4
4
  "env":{
5
- "AIRBRAKE_API_KEY":{
5
+ "APPLICATION_HOST":{
6
6
  "required":true
7
7
  },
8
8
  "EMAIL_RECIPIENTS":{
9
9
  "required":true
10
10
  },
11
+ "HEROKU_APP_NAME": {
12
+ "required":true
13
+ },
14
+ "HEROKU_PARENT_APP_NAME": {
15
+ "required":true
16
+ },
11
17
  "RACK_ENV":{
12
18
  "required":true
13
19
  },
@@ -3,6 +3,7 @@ ASSET_HOST=localhost:3000
3
3
  APPLICATION_HOST=localhost:3000
4
4
  PORT=3000
5
5
  RACK_ENV=development
6
+ RACK_MINI_PROFILER=0
6
7
  SECRET_KEY_BASE=development_secret
7
8
  EXECJS_RUNTIME=Node
8
9
  SMTP_ADDRESS=smtp.example.com
@@ -0,0 +1,5 @@
1
+ if ENV["RACK_MINI_PROFILER"].to_i > 0
2
+ require "rack-mini-profiler"
3
+
4
+ Rack::MiniProfilerRails.initialize!(Rails.application)
5
+ end
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.35.0
4
+ version: 1.36.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-12-30 00:00:00.000000000 Z
11
+ date: 2016-02-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bitters
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 1.1.0
19
+ version: '1.2'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 1.1.0
26
+ version: '1.2'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -141,6 +141,7 @@ files:
141
141
  - templates/newrelic.yml.erb
142
142
  - templates/postgresql_database.yml.erb
143
143
  - templates/puma.rb
144
+ - templates/rack_mini_profiler.rb
144
145
  - templates/rails_helper.rb
145
146
  - templates/secrets.yml
146
147
  - templates/shoulda_matchers_config_rspec.rb