suspenders 1.49.0 → 1.50.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: c5aa3ec95c81991e2d82eac5e2d338a6c911f8b2a3f34c6fcbd6226e6a8d93e0
4
- data.tar.gz: 24e839f9041fa8a31fdc223f9a58458c63f56639570b44369ec387bd58159fa3
3
+ metadata.gz: 8da6287b8db00f55d3055a907f8c8e38b449ef15d3f98c1e898770594a8b9134
4
+ data.tar.gz: 54e3a53194b0b996d5971681d44269122bbf181c8d34f1638e2255592dcbf497
5
5
  SHA512:
6
- metadata.gz: 7a1a8650d1a6d70a9d4c496d22ec1202bc30ac580b0baf1f9153a7a8b001bc14d7bf1bd8668393f19c0b632a5257ea353f2ad000e320e6eec400666c8439235c
7
- data.tar.gz: ed1eecbe03ea4228646d6e942b6ded97431754e0906bc18b92073499fd904bdb24cb05508f95ae09b5ecd230d9d6a148704f0c623aa0a5e18262aa6b37dc287b
6
+ metadata.gz: 407d7b2087c72518a79276894c1b7c4c7d8ebd9d0d6d5cbbb2f5b068935d1543a976f86bba1314bcf698e4cf1cb54ac279a6c21f0dd5ee485c0f8357f82133f5
7
+ data.tar.gz: b1bdb1c214097d96bb793614c822ddc20e090fe4cffc11b71841534c20d0108d03bb9fafaebc905b5b5923a26a5e364a2b6de21c03d41f9e2e523f4be6a4eeab
@@ -1 +1 @@
1
- 2.5.1
1
+ 2.5.3
@@ -1,5 +1,5 @@
1
1
  language: ruby
2
- rvm: 2.5.1
2
+ rvm: 2.5.3
3
3
  cache: bundler
4
4
  sudo: false
5
5
  before_install:
data/NEWS.md CHANGED
@@ -1,3 +1,13 @@
1
+ 1.50.0 (December 28, 2018)
2
+
3
+ * Removed: jquery-rails.
4
+ * Changed: default FactoryBot to `use_parent_strategy = true`.
5
+ * Upgraded: Ruby 2.5.3.
6
+ * Fixed: set `ASSET_HOST` and `APPLICATION_HOST` at top of `production.rb`.
7
+ * Fixed: `tzinfo-data` gem for Windows.
8
+ * New generator: `suspenders:json` for JSON parsing.
9
+ * New generator: `suspenders:staging:pull_requests` for Heroku app per PR.
10
+
1
11
  1.49.0 (October 19, 2018)
2
12
 
3
13
  * Removed: NOODP robots meta tags
data/README.md CHANGED
@@ -36,13 +36,11 @@ It includes application gems like:
36
36
  * [Bitters](https://github.com/thoughtbot/bitters) for scaffold application styles
37
37
  * [Delayed Job](https://github.com/collectiveidea/delayed_job) for background
38
38
  processing
39
- * [Flutie](https://github.com/thoughtbot/flutie) for `page_title` and `body_class` view
40
- helpers
41
39
  * [High Voltage](https://github.com/thoughtbot/high_voltage) for static pages
42
40
  * [Honeybadger](https://honeybadger.io) for exception notification
43
- * [jQuery Rails](https://github.com/rails/jquery-rails) for jQuery
44
41
  * [Neat](https://github.com/thoughtbot/neat) for semantic grids
45
42
  * [Normalize](https://necolas.github.io/normalize.css/) for resetting browser styles
43
+ * [Oj](http://www.ohler.com/oj/)
46
44
  * [Postgres](https://github.com/ged/ruby-pg) for access to the Postgres database
47
45
  * [Rack Canonical Host](https://github.com/tylerhunt/rack-canonical-host) to
48
46
  ensure all requests are served from the same domain
@@ -11,10 +11,12 @@ require "suspenders/generators/jobs_generator"
11
11
  require "suspenders/generators/analytics_generator"
12
12
  require "suspenders/generators/views_generator"
13
13
  require "suspenders/generators/js_driver_generator"
14
+ require "suspenders/generators/json_generator"
14
15
  require "suspenders/generators/testing_generator"
15
16
  require "suspenders/generators/production/force_tls_generator"
16
17
  require "suspenders/generators/production/email_generator"
17
18
  require "suspenders/generators/production/timeout_generator"
19
+ require "suspenders/generators/staging/pull_requests_generator"
18
20
  require "suspenders/actions"
19
21
  require "suspenders/adapters/heroku"
20
22
  require "suspenders/app_builder"
@@ -55,15 +55,6 @@ module Suspenders
55
55
  end
56
56
  end
57
57
 
58
- def create_review_apps_setup_script
59
- app_builder.template(
60
- "bin_setup_review_app.erb",
61
- "bin/setup_review_app",
62
- force: true,
63
- )
64
- app_builder.run "chmod a+x bin/setup_review_app"
65
- end
66
-
67
58
  def create_heroku_application_manifest_file
68
59
  app_builder.template "app.json.erb", "app.json"
69
60
  end
@@ -10,7 +10,6 @@ module Suspenders
10
10
  :create_heroku_application_manifest_file,
11
11
  :create_heroku_pipeline,
12
12
  :create_production_heroku_app,
13
- :create_review_apps_setup_script,
14
13
  :create_staging_heroku_app,
15
14
  :set_heroku_application_host,
16
15
  :set_heroku_backup_schedule,
@@ -100,11 +99,6 @@ module Suspenders
100
99
 
101
100
  def enable_rack_canonical_host
102
101
  config = <<-RUBY
103
-
104
- if ENV.fetch("HEROKU_APP_NAME", "").include?("staging-pr-")
105
- ENV["APPLICATION_HOST"] = ENV["HEROKU_APP_NAME"] + ".herokuapp.com"
106
- end
107
-
108
102
  config.middleware.use Rack::CanonicalHost, ENV.fetch("APPLICATION_HOST")
109
103
  RUBY
110
104
 
@@ -57,7 +57,7 @@ module Suspenders
57
57
  invoke :setup_default_directories
58
58
  invoke :create_local_heroku_setup
59
59
  invoke :create_heroku_apps
60
- invoke :generate_production_default
60
+ invoke :generate_deployment_default
61
61
  invoke :remove_config_comment_lines
62
62
  invoke :remove_routes_comment_lines
63
63
  invoke :outro
@@ -115,7 +115,6 @@ module Suspenders
115
115
 
116
116
  def create_local_heroku_setup
117
117
  say "Creating local Heroku setup"
118
- build :create_review_apps_setup_script
119
118
  build :create_deploy_script
120
119
  build :create_heroku_application_manifest_file
121
120
  end
@@ -179,6 +178,7 @@ module Suspenders
179
178
 
180
179
  def generate_default
181
180
  run("spring stop")
181
+ generate("suspenders:json")
182
182
  generate("suspenders:static")
183
183
  generate("suspenders:stylesheet_base")
184
184
  generate("suspenders:testing")
@@ -195,7 +195,8 @@ module Suspenders
195
195
  generate("suspenders:views")
196
196
  end
197
197
 
198
- def generate_production_default
198
+ def generate_deployment_default
199
+ generate("suspenders:staging:pull_requests")
199
200
  generate("suspenders:production:force_tls")
200
201
  generate("suspenders:production:email")
201
202
  generate("suspenders:production:timeout")
@@ -0,0 +1,10 @@
1
+ require "rails/generators"
2
+
3
+ module Suspenders
4
+ class JsonGenerator < Rails::Generators::Base
5
+ def add_oj
6
+ gem "oj"
7
+ Bundler.with_clean_env { run "bundle install" }
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,47 @@
1
+ require "rails/generators"
2
+ require_relative "../../actions"
3
+
4
+ module Suspenders
5
+ module Staging
6
+ class PullRequestsGenerator < Rails::Generators::Base
7
+ include Suspenders::Actions
8
+
9
+ source_root File.expand_path(
10
+ File.join("..", "..", "..", "..", "templates"),
11
+ File.dirname(__FILE__),
12
+ )
13
+
14
+ def configure_heroku_staging_pr_pipeline_host
15
+ config = <<-RUBY
16
+
17
+ if ENV.fetch("HEROKU_APP_NAME", "").include?("staging-pr-")
18
+ ENV["APPLICATION_HOST"] = ENV["HEROKU_APP_NAME"] + ".herokuapp.com"
19
+ ENV["ASSET_HOST"] = ENV["HEROKU_APP_NAME"] + ".herokuapp.com"
20
+ end
21
+ RUBY
22
+
23
+ inject_into_file(
24
+ "config/environments/production.rb",
25
+ config,
26
+ after: "Rails.application.configure do\n",
27
+ )
28
+ end
29
+
30
+ def create_review_apps_setup_script
31
+ template(
32
+ "bin_setup_review_app.erb",
33
+ "bin/setup_review_app",
34
+ force: true,
35
+ )
36
+
37
+ run "chmod a+x bin/setup_review_app"
38
+ end
39
+
40
+ private
41
+
42
+ def app_name
43
+ Rails.application.class.parent_name.demodulize.underscore.dasherize
44
+ end
45
+ end
46
+ end
47
+ end
@@ -4,5 +4,5 @@ module Suspenders
4
4
  read("#{File.dirname(__FILE__)}/../../.ruby-version").
5
5
  strip.
6
6
  freeze
7
- VERSION = "1.49.0".freeze
7
+ VERSION = "1.50.0".freeze
8
8
  end
@@ -0,0 +1,15 @@
1
+ require "spec_helper"
2
+
3
+ RSpec.describe "suspenders:json" do
4
+ it "generates the Gemfile for JSON parsing" do
5
+ with_app { generate("suspenders:json") }
6
+
7
+ expect("Gemfile").to match_contents(%r{gem .oj.})
8
+ end
9
+
10
+ it "cleans up the Gemfile from JSON parsing" do
11
+ with_app { destroy("suspenders:json") }
12
+
13
+ expect("Gemfile").not_to match_contents(%r{gem .oj.})
14
+ end
15
+ end
@@ -242,8 +242,9 @@ RSpec.describe "Suspend a new project with default configuration" do
242
242
  ]
243
243
 
244
244
  config_files.each do |file|
245
- expect(file).not_to match(/.*#.*/)
246
- expect(file).not_to match(/^$\n/)
245
+ expect(file).not_to match(%r{.*#.*})
246
+ expect(file).not_to eq(file.strip)
247
+ expect(file).not_to match(%r{^$\n\n})
247
248
  end
248
249
  end
249
250
 
@@ -0,0 +1,22 @@
1
+ require "spec_helper"
2
+
3
+ RSpec.describe "suspenders:staging:pull_requests" do
4
+ it "generates the configuration for Heroku pipeline review apps" do
5
+ with_app { generate("suspenders:staging:pull_requests") }
6
+
7
+ expect("config/environments/production.rb").to \
8
+ match_contents(%r{HEROKU_APP_NAME})
9
+
10
+ expect("bin/setup_review_app").to \
11
+ match_contents(%r{APP_NAME=dummy-app-staging-pr-\$1})
12
+ end
13
+
14
+ it "destroys the configuration for Heroku pipeline review apps" do
15
+ with_app { destroy("suspenders:staging:pull_requests") }
16
+
17
+ expect("config/environments/production.rb").not_to \
18
+ match_contents(%r{APP_NAME=dummy-app-staging-pr-\$1})
19
+
20
+ expect("bin/setup_review_app").not_to exist_as_a_file
21
+ end
22
+ end
@@ -9,7 +9,6 @@ ruby "<%= Suspenders::RUBY_VERSION %>"
9
9
 
10
10
  gem "autoprefixer-rails"
11
11
  gem "honeybadger"
12
- gem "jquery-rails"
13
12
  gem "pg"
14
13
  gem "puma"
15
14
  gem "rack-canonical-host"
@@ -19,6 +18,7 @@ gem "sass-rails", "~> 5.0"
19
18
  gem "skylight"
20
19
  gem "sprockets", ">= 3.0.0"
21
20
  gem "title"
21
+ gem "tzinfo-data", platforms: [:mingw, :x64_mingw, :mswin, :jruby]
22
22
  gem "uglifier"
23
23
  gem "bootsnap", require: false
24
24
  <% if options[:webpack] %>
@@ -1,10 +1,3 @@
1
1
  <%= javascript_include_tag :application %>
2
2
 
3
3
  <%= yield :javascript %>
4
-
5
- <% if Rails.env.test? %>
6
- <%= javascript_tag do %>
7
- $.fx.off = true;
8
- $.ajaxSetup({ async: false });
9
- <% end %>
10
- <% end %>
@@ -1,3 +1,5 @@
1
+ FactoryBot.use_parent_strategy = true
2
+
1
3
  RSpec.configure do |config|
2
4
  config.include FactoryBot::Syntax::Methods
3
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.49.0
4
+ version: 1.50.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-10-19 00:00:00.000000000 Z
11
+ date: 2018-12-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bitters
@@ -91,10 +91,12 @@ files:
91
91
  - lib/suspenders/generators/forms_generator.rb
92
92
  - lib/suspenders/generators/jobs_generator.rb
93
93
  - lib/suspenders/generators/js_driver_generator.rb
94
+ - lib/suspenders/generators/json_generator.rb
94
95
  - lib/suspenders/generators/lint_generator.rb
95
96
  - lib/suspenders/generators/production/email_generator.rb
96
97
  - lib/suspenders/generators/production/force_tls_generator.rb
97
98
  - lib/suspenders/generators/production/timeout_generator.rb
99
+ - lib/suspenders/generators/staging/pull_requests_generator.rb
98
100
  - lib/suspenders/generators/static_generator.rb
99
101
  - lib/suspenders/generators/stylesheet_base_generator.rb
100
102
  - lib/suspenders/generators/testing_generator.rb
@@ -107,8 +109,10 @@ files:
107
109
  - spec/features/cli_help_spec.rb
108
110
  - spec/features/github_spec.rb
109
111
  - spec/features/heroku_spec.rb
112
+ - spec/features/json_spec.rb
110
113
  - spec/features/new_project_spec.rb
111
114
  - spec/features/production/email_spec.rb
115
+ - spec/features/staging/pull_requests_spec.rb
112
116
  - spec/spec_helper.rb
113
117
  - spec/support/contain_json_matcher.rb
114
118
  - spec/support/exist_as_a_file_matcher.rb
@@ -170,7 +174,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
170
174
  requirements:
171
175
  - - ">="
172
176
  - !ruby/object:Gem::Version
173
- version: 2.5.1
177
+ version: 2.5.3
174
178
  required_rubygems_version: !ruby/object:Gem::Requirement
175
179
  requirements:
176
180
  - - ">="
@@ -178,24 +182,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
178
182
  version: 2.7.4
179
183
  requirements: []
180
184
  rubyforge_project:
181
- rubygems_version: 2.7.7
185
+ rubygems_version: 2.7.6
182
186
  signing_key:
183
187
  specification_version: 4
184
188
  summary: Generate a Rails app using thoughtbot's best practices.
185
- test_files:
186
- - spec/adapters/heroku_spec.rb
187
- - spec/fakes/bin/heroku
188
- - spec/fakes/bin/hub
189
- - spec/features/api_spec.rb
190
- - spec/features/cli_help_spec.rb
191
- - spec/features/github_spec.rb
192
- - spec/features/heroku_spec.rb
193
- - spec/features/new_project_spec.rb
194
- - spec/features/production/email_spec.rb
195
- - spec/spec_helper.rb
196
- - spec/support/contain_json_matcher.rb
197
- - spec/support/exist_as_a_file_matcher.rb
198
- - spec/support/fake_github.rb
199
- - spec/support/fake_heroku.rb
200
- - spec/support/match_contents_matcher.rb
201
- - spec/support/suspenders.rb
189
+ test_files: []