suspenders 1.46.0 → 1.47.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
  SHA256:
3
- metadata.gz: 5e456d8de3863b0f24364c29696229e699488cbe187aca31ee6abde4ed512e5a
4
- data.tar.gz: d06e8ae58fff1ab88ec50db76194af8da542ff9485eb73af0014f1e7bf87efc1
3
+ metadata.gz: e585c8f3e53dfd7aa542261c004856ddd5e6372373d5a09fb23ad4adcafbfde1
4
+ data.tar.gz: ec2ff003f5d6ba7870fef1d617f3c60580a0b0dad6837bcdc5fcaf1600e62539
5
5
  SHA512:
6
- metadata.gz: b4a3ab9fdf134a6d2504c2c9110471df7252c545da046897c91504333f4c0dff88b486bda56f554d6cd8cec66ab2fdca732434afe51dc1952c211bc9b564db57
7
- data.tar.gz: 46cdb956f84eb6fed1fcbd9e095974d4ffac51a65093debe0a73d80bee19e7d441bc7cd815a75c942d325c7c06d9c975b4efc0dbf7e03ab29ac64c012dc4e03a
6
+ metadata.gz: 5ec04e0b9b8e16290547280ad3e76ebaf74f7cc427840eb13f4bef533eff595dc4d3b6829470b715b46104246b8465dd356ecb71b86da025a20356e1b1cf2efb
7
+ data.tar.gz: c95149425b13ea6b3ebedbe86207cafc3bf616293c2afab63eaffeb156b7e11ca459fb6bc89a30e882640b72dceea0e65de0ab7c86713e5d152d737234ace46c
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.5.0
1
+ 2.5.1
data/.travis.yml CHANGED
@@ -1,11 +1,12 @@
1
1
  language: ruby
2
- rvm: 2.5.0
2
+ rvm: 2.5.1
3
3
  cache: bundler
4
4
  sudo: false
5
5
  before_install:
6
6
  - "echo '--colour' > ~/.rspec"
7
7
  - git config --global user.name 'Travis CI'
8
8
  - git config --global user.email 'travis-ci@example.com'
9
+ - gem install bundler
9
10
  - gem update --system
10
11
  install: bundle install
11
12
  notifications:
data/NEWS.md CHANGED
@@ -1,3 +1,15 @@
1
+ 1.47.0 (May 25, 2018)
2
+
3
+ * Bug fix: normalize.css Sass import is concatenated with other styles now
4
+ * Bug fix: the suspenders gem itself is not needed in production
5
+ * Bug fix: bundle install after adding a gem
6
+ * Breaking: remove Refills
7
+ * Breaking: rename suspenders:enforce_ssl to suspenders:production:force_tls
8
+ * Upgrade: update to Ruby 2.5.1
9
+ * Upgrade: update to Rails 5.2.0
10
+ * New generator: production email
11
+ * New generator: production timeouts
12
+
1
13
  1.46.0 (January 26, 2018)
2
14
 
3
15
  * Bug fix: Fix for action mailer asset_host
data/README.md CHANGED
@@ -50,8 +50,6 @@ It includes application gems like:
50
50
  taking too long
51
51
  * [Recipient Interceptor](https://github.com/croaky/recipient_interceptor) to
52
52
  avoid accidentally sending emails to real people from staging
53
- * [Refills](https://github.com/thoughtbot/refills) for “copy-paste” components
54
- and patterns based on Bourbon, Neat and Bitters
55
53
  * [Simple Form](https://github.com/plataformatec/simple_form) for form markup
56
54
  and style
57
55
  * [Skylight](https://www.skylight.io/) for monitoring performance
@@ -156,7 +154,7 @@ bypass this with the `--skip-git` option:
156
154
  You can optionally create a GitHub repository for the suspended Rails app. It
157
155
  requires that you have [Hub](https://github.com/github/hub) on your system:
158
156
 
159
- curl http://hub.github.com/standalone -sLo ~/bin/hub && chmod +x ~/bin/hub
157
+ curl https://hub.github.com/standalone -sLo ~/bin/hub && chmod +x ~/bin/hub
160
158
  suspenders app --github organization/project
161
159
 
162
160
  This has the same effect as running:
data/RELEASING.md CHANGED
@@ -1,19 +1,18 @@
1
1
  # Releasing
2
2
 
3
- 1. Update `lib/suspenders/version.rb` file accordingly.
4
- 2. Update `NEWS.md` to reflect the changes since last release.
3
+ 1. Update `NEWS.md` to reflect the changes since last release.
4
+ 2. Update `lib/suspenders/version.rb` file accordingly.
5
5
  3. Commit changes. There shouldn't be code changes, and thus CI doesn't need to
6
- run, you can then add `[ci skip]` to the commit message.
6
+ run; you can add `[ci skip]` to the commit message.
7
7
  4. Tag the release: `git tag vVERSION -a -s`. The tag message should contain the
8
8
  appropriate `NEWS.md` subsection.
9
9
  5. Push changes: `git push --tags`
10
10
  6. Build and publish to rubygems:
11
- ```bash
11
+ ```sh
12
12
  gem build suspenders.gemspec
13
13
  gem push suspenders-*.gem
14
14
  ```
15
-
16
15
  7. Add a new GitHub release:
17
16
  https://github.com/thoughtbot/suspenders/releases/new?tag=vVERSION
18
- 8. Announce the new release, making sure to say "thank you" to the contributors
19
- who helped shape this version!
17
+ 8. Announce the new release, making sure to thank the contributors who helped
18
+ shape this version!
data/lib/suspenders.rb CHANGED
@@ -1,6 +1,5 @@
1
1
  require "suspenders/version"
2
2
  require "suspenders/generators/app_generator"
3
- require "suspenders/generators/enforce_ssl_generator"
4
3
  require "suspenders/generators/static_generator"
5
4
  require "suspenders/generators/stylesheet_base_generator"
6
5
  require "suspenders/generators/forms_generator"
@@ -13,6 +12,9 @@ require "suspenders/generators/analytics_generator"
13
12
  require "suspenders/generators/views_generator"
14
13
  require "suspenders/generators/js_driver_generator"
15
14
  require "suspenders/generators/testing_generator"
15
+ require "suspenders/generators/production/force_tls_generator"
16
+ require "suspenders/generators/production/email_generator"
17
+ require "suspenders/generators/production/timeout_generator"
16
18
  require "suspenders/actions"
17
19
  require "suspenders/adapters/heroku"
18
20
  require "suspenders/app_builder"
@@ -94,20 +94,8 @@ module Suspenders
94
94
  inject_into_class 'config/application.rb', 'Application', config
95
95
  end
96
96
 
97
- def configure_smtp
98
- copy_file 'smtp.rb', 'config/smtp.rb'
99
-
100
- prepend_file 'config/environments/production.rb',
101
- %{require Rails.root.join("config/smtp")\n}
102
-
103
- config = <<-RUBY
104
-
105
- config.action_mailer.delivery_method = :smtp
106
- config.action_mailer.smtp_settings = SMTP_SETTINGS
107
- RUBY
108
-
109
- inject_into_file 'config/environments/production.rb', config,
110
- after: "config.action_mailer.raise_delivery_errors = false"
97
+ def configure_local_mail
98
+ copy_file "email.rb", "config/initializers/email.rb"
111
99
  end
112
100
 
113
101
  def enable_rack_canonical_host
@@ -132,9 +120,11 @@ module Suspenders
132
120
  "# config.action_controller.asset_host = 'http://assets.example.com'",
133
121
  'config.action_controller.asset_host = ENV.fetch("ASSET_HOST", ENV.fetch("APPLICATION_HOST"))'
134
122
 
135
- replace_in_file 'config/initializers/assets.rb',
136
- "config.assets.version = '1.0'",
137
- 'config.assets.version = (ENV["ASSETS_VERSION"] || "1.0")'
123
+ if File.exist?("config/initializers/assets.rb")
124
+ replace_in_file 'config/initializers/assets.rb',
125
+ "config.assets.version = '1.0'",
126
+ 'config.assets.version = (ENV["ASSETS_VERSION"] || "1.0")'
127
+ end
138
128
 
139
129
  config = <<-EOD
140
130
  config.public_file_server.headers = {
@@ -172,7 +162,7 @@ config.public_file_server.headers = {
172
162
  end
173
163
  end
174
164
 
175
- def set_ruby_to_version_being_used
165
+ def ruby_version
176
166
  create_file '.ruby-version', "#{Suspenders::RUBY_VERSION}\n"
177
167
  end
178
168
 
@@ -190,14 +180,6 @@ config.public_file_server.headers = {
190
180
  template "config_locales_en.yml.erb", "config/locales/en.yml"
191
181
  end
192
182
 
193
- def configure_rack_timeout
194
- rack_timeout_config = <<-RUBY
195
- Rack::Timeout.timeout = (ENV["RACK_TIMEOUT"] || 10).to_i
196
- RUBY
197
-
198
- append_file "config/environments/production.rb", rack_timeout_config
199
- end
200
-
201
183
  def configure_action_mailer
202
184
  action_mailer_host "development", %{"localhost:3000"}
203
185
  action_mailer_asset_host "development", %{"http://localhost:3000"}
@@ -298,8 +280,11 @@ you can deploy to staging and production with:
298
280
  EOS
299
281
 
300
282
  %w(500 404 422).each do |page|
301
- inject_into_file "public/#{page}.html", meta_tags, after: "<head>\n"
302
- replace_in_file "public/#{page}.html", /<!--.+-->\n/, ''
283
+ path = "public/#{page}.html"
284
+ if File.exist?(path)
285
+ inject_into_file path, meta_tags, after: "<head>\n"
286
+ replace_in_file path, /<!--.+-->\n/, ''
287
+ end
303
288
  end
304
289
  end
305
290
 
@@ -64,7 +64,6 @@ module Suspenders
64
64
 
65
65
  def customize_gemfile
66
66
  build :replace_gemfile, options[:path]
67
- build :set_ruby_to_version_being_used
68
67
  bundle_command 'install'
69
68
  end
70
69
 
@@ -80,6 +79,7 @@ module Suspenders
80
79
 
81
80
  def setup_development_environment
82
81
  say 'Setting up the development environment'
82
+ build :configure_local_mail
83
83
  build :raise_on_missing_assets_in_test
84
84
  build :raise_on_delivery_errors
85
85
  build :set_test_delivery_method
@@ -92,8 +92,6 @@ module Suspenders
92
92
 
93
93
  def setup_production_environment
94
94
  say 'Setting up the production environment'
95
- build :configure_smtp
96
- build :configure_rack_timeout
97
95
  build :enable_rack_canonical_host
98
96
  build :enable_rack_deflater
99
97
  build :setup_asset_host
@@ -180,19 +178,23 @@ module Suspenders
180
178
 
181
179
  def generate_default
182
180
  run("spring stop")
183
- generate("suspenders:enforce_ssl")
184
181
  generate("suspenders:static")
185
182
  generate("suspenders:stylesheet_base")
186
183
  generate("suspenders:testing")
187
184
  generate("suspenders:ci")
188
185
  generate("suspenders:js_driver")
189
- generate("suspenders:forms")
186
+ unless options[:api]
187
+ generate("suspenders:forms")
188
+ end
190
189
  generate("suspenders:db_optimizations")
191
190
  generate("suspenders:factories")
192
191
  generate("suspenders:lint")
193
192
  generate("suspenders:jobs")
194
193
  generate("suspenders:analytics")
195
194
  generate("suspenders:views")
195
+ generate("suspenders:production:force_tls")
196
+ generate("suspenders:production:email")
197
+ generate("suspenders:production:timeout")
196
198
  end
197
199
 
198
200
  def outro
@@ -4,6 +4,7 @@ module Suspenders
4
4
  class DbOptimizationsGenerator < Rails::Generators::Base
5
5
  def add_bullet
6
6
  gem "bullet", group: %i(development test)
7
+ Bundler.with_clean_env { run "bundle install" }
7
8
  end
8
9
 
9
10
  def configure_bullet
@@ -9,6 +9,7 @@ module Suspenders
9
9
 
10
10
  def add_factory_bot
11
11
  gem "factory_bot_rails", group: %i(development test)
12
+ Bundler.with_clean_env { run "bundle install" }
12
13
  end
13
14
 
14
15
  def set_up_factory_bot_for_rspec
@@ -1,4 +1,5 @@
1
1
  require "rails/generators"
2
+ require_relative "../actions"
2
3
 
3
4
  module Suspenders
4
5
  class JobsGenerator < Rails::Generators::Base
@@ -9,6 +9,7 @@ module Suspenders
9
9
 
10
10
  def add_gems
11
11
  gem "capybara-webkit", group: :test
12
+ Bundler.with_clean_env { run "bundle install" }
12
13
  end
13
14
 
14
15
  def configure_capybara_webkit
@@ -0,0 +1,30 @@
1
+ require "rails/generators"
2
+
3
+ module Suspenders
4
+ module Production
5
+ class EmailGenerator < Rails::Generators::Base
6
+ source_root File.expand_path(
7
+ File.join("..", "..", "..", "..", "templates"),
8
+ File.dirname(__FILE__),
9
+ )
10
+
11
+ def smtp_configuration
12
+ copy_file "smtp.rb", "config/smtp.rb"
13
+
14
+ prepend_file "config/environments/production.rb",
15
+ %{require Rails.root.join("config/smtp")\n}
16
+ end
17
+
18
+ def use_smtp
19
+ config = <<-RUBY
20
+
21
+ config.action_mailer.delivery_method = :smtp
22
+ config.action_mailer.smtp_settings = SMTP_SETTINGS
23
+ RUBY
24
+
25
+ inject_into_file "config/environments/production.rb", config,
26
+ after: "config.action_mailer.raise_delivery_errors = false"
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,14 @@
1
+ require "rails/generators"
2
+ require_relative "../../actions"
3
+
4
+ module Suspenders
5
+ module Production
6
+ class ForceTlsGenerator < Rails::Generators::Base
7
+ include Suspenders::Actions
8
+
9
+ def config_enforce_ssl
10
+ configure_environment "production", "config.force_ssl = true"
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,21 @@
1
+ require "rails/generators"
2
+
3
+ module Suspenders
4
+ module Production
5
+ class TimeoutGenerator < Rails::Generators::Base
6
+ def add_gem
7
+ gem "rack-timeout", group: :production
8
+ end
9
+
10
+ def configure_rack_timeout
11
+ append_file "config/environments/production.rb", rack_timeout_config
12
+ end
13
+
14
+ private
15
+
16
+ def rack_timeout_config
17
+ %{Rack::Timeout.timeout = ENV.fetch("RACK_TIMEOUT", 10).to_i}
18
+ end
19
+ end
20
+ end
21
+ end
@@ -9,7 +9,6 @@ module Suspenders
9
9
  def add_stylesheet_gems
10
10
  gem "bourbon", "~> 5.0"
11
11
  gem "neat", "~> 2.1"
12
- gem "refills", group: [:development, :test]
13
12
  Bundler.with_clean_env { run "bundle install" }
14
13
  end
15
14
 
@@ -25,11 +24,6 @@ module Suspenders
25
24
  remove_file "app/assets/stylesheets/application.css"
26
25
  end
27
26
 
28
- def install_refills
29
- generate "refills:import", "flashes"
30
- remove_dir "app/views/refills"
31
- end
32
-
33
27
  def install_bitters
34
28
  run "bitters install --path app/assets/stylesheets"
35
29
  end
@@ -1,8 +1,8 @@
1
1
  module Suspenders
2
- RAILS_VERSION = "~> 5.1.4".freeze
2
+ RAILS_VERSION = "~> 5.2.0".freeze
3
3
  RUBY_VERSION = IO.
4
4
  read("#{File.dirname(__FILE__)}/../../.ruby-version").
5
5
  strip.
6
6
  freeze
7
- VERSION = "1.46.0".freeze
7
+ VERSION = "1.47.0".freeze
8
8
  end
@@ -0,0 +1,18 @@
1
+ require "spec_helper"
2
+
3
+ RSpec.describe "Suspend a new project with --api flag" do
4
+ before(:all) do
5
+ drop_dummy_database
6
+ remove_project_directory
7
+ end
8
+
9
+ it "ensures project specs pass" do
10
+ run_suspenders("--api")
11
+
12
+ Dir.chdir(project_path) do
13
+ Bundler.with_clean_env do
14
+ expect(`rake`).to include("0 failures")
15
+ end
16
+ end
17
+ end
18
+ end
@@ -178,10 +178,12 @@ RSpec.describe "Suspend a new project with default configuration" do
178
178
  expect(production_config).not_to match(/"HOST"/)
179
179
  end
180
180
 
181
- it "configures email interceptor in smtp config" do
182
- smtp_file = IO.read("#{project_path}/config/smtp.rb")
183
- expect(smtp_file).
184
- to match(/RecipientInterceptor.new\(ENV\["EMAIL_RECIPIENTS"\]\)/)
181
+ it "configures email interceptor" do
182
+ email_file = File.join(project_path, "config", "initializers", "email.rb")
183
+ email_config = IO.read(email_file)
184
+
185
+ expect(email_config).
186
+ to include(%{RecipientInterceptor.new(ENV["EMAIL_RECIPIENTS"])})
185
187
  end
186
188
 
187
189
  it "configures language in html element" do
@@ -286,21 +288,17 @@ RSpec.describe "Suspend a new project with default configuration" do
286
288
  expect(gemfile).to match(/high_voltage/)
287
289
  end
288
290
 
289
- it "adds and configures bourbon, neat, and refills" do
291
+ it "adds and configures bourbon and neat" do
290
292
  gemfile = read_project_file("Gemfile")
291
293
 
292
294
  expect(gemfile).to match(/bourbon/)
293
295
  expect(gemfile).to match(/neat/)
294
- expect(gemfile).to match(/refills/)
295
296
  end
296
297
 
297
- it "configures bourbon, neat, and refills" do
298
- flashes_path = %w(app assets stylesheets refills _flashes.scss)
299
- expect(read_project_file(flashes_path)).to match(/\$flashes/m)
300
-
298
+ it "configures bourbon, neat, and bitters" do
301
299
  app_css = read_project_file(%w(app assets stylesheets application.scss))
302
300
  expect(app_css).to match(
303
- /normalize\.css\/normalize\.css.*bourbon.*neat.*base.*refills/m,
301
+ /normalize\.css\/normalize.*bourbon.*neat.*base/m,
304
302
  )
305
303
  end
306
304
 
@@ -0,0 +1,15 @@
1
+ require "spec_helper"
2
+
3
+ RSpec.describe "suspenders:production:email" do
4
+ it "generates the configuration for a production email deployment" do
5
+ with_app { generate("suspenders:production:email") }
6
+
7
+ expect("config/smtp.rb").to match_contents(%r{SMTP_SETTINGS\s*=})
8
+ expect("config/environments/production.rb").to \
9
+ match_contents(%r{require.+config/smtp})
10
+ expect("config/environments/production.rb").to \
11
+ match_contents(%r{action_mailer.delivery_method\s*=\s*:smtp})
12
+ expect("config/environments/production.rb").to \
13
+ match_contents(%r{action_mailer.smtp_settings\s*=\s*SMTP_SETTINGS})
14
+ end
15
+ end
@@ -0,0 +1,6 @@
1
+ RSpec::Matchers.define :match_contents do |regexp|
2
+ match do |filename|
3
+ contents = IO.read(File.join(project_path, filename))
4
+ contents =~ regexp
5
+ end
6
+ end
@@ -11,52 +11,81 @@ module SuspendersTestHelpers
11
11
 
12
12
  def run_suspenders(arguments = nil)
13
13
  arguments = "--path=#{root_path} #{arguments}"
14
- Dir.chdir(tmp_path) do
15
- Bundler.with_clean_env do
16
- add_fakes_to_path
17
- with_revision_for_honeybadger do
18
- `
19
- #{suspenders_bin} #{APP_NAME} #{arguments}
20
- `
14
+ run_in_tmp do
15
+ add_fakes_to_path
16
+
17
+ with_revision_for_honeybadger do
18
+ debug `#{suspenders_bin} #{APP_NAME} #{arguments}`
19
+ end
20
+
21
+ Dir.chdir(APP_NAME) do
22
+ with_env("HOME", tmp_path) do
23
+ debug `git add .`
24
+ debug `git commit -m 'Initial commit'`
25
+ end
26
+ end
27
+ end
28
+ end
29
+
30
+ def with_app
31
+ drop_dummy_database
32
+ remove_project_directory
33
+ rails_new
34
+ setup_app_dependencies
35
+
36
+ yield
37
+ end
38
+
39
+ def rails_new
40
+ run_in_tmp do
41
+ add_fakes_to_path
42
+
43
+ with_revision_for_honeybadger do
44
+ debug `#{system_rails_bin} new #{APP_NAME}`
45
+ end
46
+
47
+ Dir.chdir(APP_NAME) do
48
+ File.open("Gemfile", "a") do |file|
49
+ file.puts %{gem "suspenders", path: #{root_path.inspect}}
21
50
  end
22
- Dir.chdir(APP_NAME) do
23
- with_env("HOME", tmp_path) do
24
- `git add .`
25
- `git commit -m 'Initial commit'`
26
- end
51
+
52
+ with_env("HOME", tmp_path) do
53
+ debug `git add .`
54
+ debug `git commit -m 'Initial commit'`
27
55
  end
28
56
  end
29
57
  end
30
58
  end
31
59
 
32
- def suspenders_help_command
33
- Dir.chdir(tmp_path) do
34
- Bundler.with_clean_env do
35
- `
36
- #{suspenders_bin} -h
37
- `
60
+ def generate(generator)
61
+ run_in_project do
62
+ with_revision_for_honeybadger do
63
+ debug `bin/spring stop`
64
+ debug `#{project_rails_bin} generate #{generator}`
38
65
  end
39
66
  end
40
67
  end
41
68
 
69
+ def suspenders_help_command
70
+ run_in_tmp do
71
+ debug `#{suspenders_bin} -h`
72
+ end
73
+ end
74
+
42
75
  def setup_app_dependencies
43
- if File.exist?(project_path)
44
- Dir.chdir(project_path) do
45
- Bundler.with_clean_env do
46
- `bundle check || bundle install`
47
- end
48
- end
76
+ run_in_project do
77
+ debug `bundle check || bundle install`
49
78
  end
79
+ rescue Errno::ENOENT
80
+ # The project_path might not exist, in which case we can skip this.
50
81
  end
51
82
 
52
83
  def drop_dummy_database
53
- if File.exist?(project_path)
54
- Dir.chdir(project_path) do
55
- Bundler.with_clean_env do
56
- `rails db:drop`
57
- end
58
- end
84
+ run_in_project do
85
+ debug `#{project_rails_bin} db:drop 2>&1`
59
86
  end
87
+ rescue Errno::ENOENT
88
+ # The project_path might not exist, in which case we can skip this.
60
89
  end
61
90
 
62
91
  def add_fakes_to_path
@@ -81,6 +110,14 @@ module SuspendersTestHelpers
81
110
  File.join(root_path, 'bin', 'suspenders')
82
111
  end
83
112
 
113
+ def system_rails_bin
114
+ "rails"
115
+ end
116
+
117
+ def project_rails_bin
118
+ "bin/rails"
119
+ end
120
+
84
121
  def support_bin
85
122
  File.join(root_path, "spec", "fakes", "bin")
86
123
  end
@@ -109,4 +146,28 @@ module SuspendersTestHelpers
109
146
  yield
110
147
  end
111
148
  end
149
+
150
+ def run_in_tmp
151
+ Dir.chdir(tmp_path) do
152
+ Bundler.with_clean_env do
153
+ yield
154
+ end
155
+ end
156
+ end
157
+
158
+ def run_in_project
159
+ Dir.chdir(project_path) do
160
+ Bundler.with_clean_env do
161
+ yield
162
+ end
163
+ end
164
+ end
165
+
166
+ def debug(output)
167
+ if ENV["DEBUG"]
168
+ warn output
169
+ end
170
+
171
+ output
172
+ end
112
173
  end
@@ -19,9 +19,9 @@ gem "recipient_interceptor"
19
19
  gem "sass-rails", "~> 5.0"
20
20
  gem "skylight"
21
21
  gem "sprockets", ">= 3.0.0"
22
- gem "suspenders"
23
22
  gem "title"
24
23
  gem "uglifier"
24
+ gem "bootsnap", require: false
25
25
  <% if options[:webpack] %>
26
26
  gem "webpacker"
27
27
  <% end %>
@@ -49,6 +49,4 @@ group :test do
49
49
  gem "webmock"
50
50
  end
51
51
 
52
- group :production do
53
- gem "rack-timeout"
54
- end
52
+ gem "suspenders", group: [:development, :test]
@@ -1,9 +1,8 @@
1
1
  @charset "utf-8";
2
2
 
3
- @import "normalize.css/normalize.css";
3
+ @import "normalize.css/normalize";
4
4
 
5
5
  @import "bourbon";
6
6
  @import "neat";
7
7
 
8
8
  @import "base/base";
9
- @import "refills/flashes";
@@ -0,0 +1,3 @@
1
+ if ENV["EMAIL_RECIPIENTS"].present?
2
+ Mail.register_interceptor RecipientInterceptor.new(ENV["EMAIL_RECIPIENTS"])
3
+ end
data/templates/smtp.rb CHANGED
@@ -7,7 +7,3 @@ SMTP_SETTINGS = {
7
7
  port: "587",
8
8
  user_name: ENV.fetch("SMTP_USERNAME")
9
9
  }
10
-
11
- if ENV["EMAIL_RECIPIENTS"].present?
12
- Mail.register_interceptor RecipientInterceptor.new(ENV["EMAIL_RECIPIENTS"])
13
- 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.46.0
4
+ version: 1.47.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - thoughtbot
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-01-26 00:00:00.000000000 Z
11
+ date: 2018-05-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bitters
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 5.1.4
33
+ version: 5.2.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 5.1.4
40
+ version: 5.2.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -87,12 +87,14 @@ files:
87
87
  - lib/suspenders/generators/app_generator.rb
88
88
  - lib/suspenders/generators/ci_generator.rb
89
89
  - lib/suspenders/generators/db_optimizations_generator.rb
90
- - lib/suspenders/generators/enforce_ssl_generator.rb
91
90
  - lib/suspenders/generators/factories_generator.rb
92
91
  - lib/suspenders/generators/forms_generator.rb
93
92
  - lib/suspenders/generators/jobs_generator.rb
94
93
  - lib/suspenders/generators/js_driver_generator.rb
95
94
  - lib/suspenders/generators/lint_generator.rb
95
+ - lib/suspenders/generators/production/email_generator.rb
96
+ - lib/suspenders/generators/production/force_tls_generator.rb
97
+ - lib/suspenders/generators/production/timeout_generator.rb
96
98
  - lib/suspenders/generators/static_generator.rb
97
99
  - lib/suspenders/generators/stylesheet_base_generator.rb
98
100
  - lib/suspenders/generators/testing_generator.rb
@@ -101,13 +103,16 @@ files:
101
103
  - spec/adapters/heroku_spec.rb
102
104
  - spec/fakes/bin/heroku
103
105
  - spec/fakes/bin/hub
106
+ - spec/features/api_spec.rb
104
107
  - spec/features/cli_help_spec.rb
105
108
  - spec/features/github_spec.rb
106
109
  - spec/features/heroku_spec.rb
107
110
  - spec/features/new_project_spec.rb
111
+ - spec/features/production/email_spec.rb
108
112
  - spec/spec_helper.rb
109
113
  - spec/support/fake_github.rb
110
114
  - spec/support/fake_heroku.rb
115
+ - spec/support/match_contents_matcher.rb
111
116
  - spec/support/suspenders.rb
112
117
  - suspenders.gemspec
113
118
  - templates/Gemfile.erb
@@ -132,6 +137,7 @@ files:
132
137
  - templates/dev.rake
133
138
  - templates/dotfiles/.ctags
134
139
  - templates/dotfiles/.env
140
+ - templates/email.rb
135
141
  - templates/errors.rb
136
142
  - templates/factories.rb
137
143
  - templates/factory_bot_rspec.rb
@@ -162,7 +168,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
162
168
  requirements:
163
169
  - - ">="
164
170
  - !ruby/object:Gem::Version
165
- version: 2.5.0
171
+ version: 2.5.1
166
172
  required_rubygems_version: !ruby/object:Gem::Requirement
167
173
  requirements:
168
174
  - - ">="
@@ -170,19 +176,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
170
176
  version: 2.7.4
171
177
  requirements: []
172
178
  rubyforge_project:
173
- rubygems_version: 2.7.4
179
+ rubygems_version: 2.7.6
174
180
  signing_key:
175
181
  specification_version: 4
176
182
  summary: Generate a Rails app using thoughtbot's best practices.
177
- test_files:
178
- - spec/adapters/heroku_spec.rb
179
- - spec/fakes/bin/heroku
180
- - spec/fakes/bin/hub
181
- - spec/features/cli_help_spec.rb
182
- - spec/features/github_spec.rb
183
- - spec/features/heroku_spec.rb
184
- - spec/features/new_project_spec.rb
185
- - spec/spec_helper.rb
186
- - spec/support/fake_github.rb
187
- - spec/support/fake_heroku.rb
188
- - spec/support/suspenders.rb
183
+ test_files: []
@@ -1,12 +0,0 @@
1
- require "rails/generators"
2
- require_relative "../actions"
3
-
4
- module Suspenders
5
- class EnforceSslGenerator < Rails::Generators::Base
6
- include Suspenders::Actions
7
-
8
- def enforce_ssl
9
- configure_environment "production", "config.force_ssl = true"
10
- end
11
- end
12
- end