suspenders 1.35.0 → 1.36.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: 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