suspenders 1.49.0 → 1.50.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
  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: []