welaika-suspenders 2.29.0 → 2.30.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (54) hide show
  1. checksums.yaml +4 -4
  2. data/.ruby-version +1 -1
  3. data/.travis.yml +2 -3
  4. data/NEWS.md +18 -0
  5. data/README.md +2 -1
  6. data/lib/suspenders.rb +4 -0
  7. data/lib/suspenders/adapters/heroku.rb +13 -27
  8. data/lib/suspenders/app_builder.rb +2 -29
  9. data/lib/suspenders/generators/app_generator.rb +10 -16
  10. data/lib/suspenders/generators/base.rb +20 -0
  11. data/lib/suspenders/generators/ci_generator.rb +3 -10
  12. data/lib/suspenders/generators/db_optimizations_generator.rb +2 -2
  13. data/lib/suspenders/generators/decorator_generator.rb +1 -6
  14. data/lib/suspenders/generators/factories_generator.rb +2 -7
  15. data/lib/suspenders/generators/faker_generator.rb +1 -6
  16. data/lib/suspenders/generators/js_driver_generator.rb +2 -7
  17. data/lib/suspenders/generators/json_generator.rb +10 -0
  18. data/lib/suspenders/generators/lint_generator.rb +2 -7
  19. data/lib/suspenders/generators/production/deployment_generator.rb +27 -0
  20. data/lib/suspenders/generators/production/email_generator.rb +3 -11
  21. data/lib/suspenders/generators/production/error_reporting_generator.rb +1 -8
  22. data/lib/suspenders/generators/production/force_tls_generator.rb +2 -5
  23. data/lib/suspenders/generators/production/manifest_generator.rb +24 -0
  24. data/lib/suspenders/generators/production/timeout_generator.rb +2 -2
  25. data/lib/suspenders/generators/security_generator.rb +1 -6
  26. data/lib/suspenders/generators/staging/pull_requests_generator.rb +33 -0
  27. data/lib/suspenders/generators/static_generator.rb +2 -2
  28. data/lib/suspenders/generators/stylesheet_base_generator.rb +2 -6
  29. data/lib/suspenders/generators/testing_generator.rb +2 -7
  30. data/lib/suspenders/generators/views_generator.rb +2 -7
  31. data/lib/suspenders/version.rb +2 -2
  32. data/spec/adapters/heroku_spec.rb +2 -2
  33. data/spec/features/heroku_spec.rb +22 -6
  34. data/spec/features/json_spec.rb +15 -0
  35. data/spec/features/new_project_spec.rb +13 -8
  36. data/spec/features/production/deployment_spec.rb +22 -0
  37. data/spec/features/production/email_spec.rb +1 -1
  38. data/spec/features/production/manifest_spec.rb +35 -0
  39. data/spec/features/staging/pull_requests_spec.rb +22 -0
  40. data/spec/spec_helper.rb +3 -0
  41. data/spec/support/be_executable_matcher.rb +7 -0
  42. data/spec/support/generators.rb +5 -0
  43. data/spec/support/project_files.rb +13 -0
  44. data/suspenders.gemspec +2 -0
  45. data/templates/Gemfile.erb +3 -5
  46. data/templates/_flashes.html.slim +1 -1
  47. data/templates/factory_bot_rspec.rb +2 -0
  48. data/templates/gitlab-ci.yml.erb +13 -16
  49. data/templates/overcommit.yml +1 -1
  50. data/templates/suspenders_gitignore +3 -0
  51. data/templates/suspenders_layout.html.slim +2 -3
  52. metadata +53 -9
  53. data/templates/app.json.erb +0 -27
  54. data/templates/browserslist +0 -3
data/spec/spec_helper.rb CHANGED
@@ -1,4 +1,6 @@
1
1
  require 'bundler/setup'
2
+ require 'pry-byebug'
3
+ require 'awesome_print'
2
4
 
3
5
  Bundler.require(:default, :test)
4
6
 
@@ -8,6 +10,7 @@ Dir['./spec/support/**/*.rb'].each { |file| require file }
8
10
 
9
11
  RSpec.configure do |config|
10
12
  config.include SuspendersTestHelpers
13
+ config.include ProjectFiles
11
14
 
12
15
  config.example_status_persistence_file_path = 'tmp/rspec_examples.txt'
13
16
 
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ RSpec::Matchers.define :be_executable do
4
+ match do |filename|
5
+ File.stat(File.join(project_path, filename)).executable?
6
+ end
7
+ end
@@ -0,0 +1,5 @@
1
+ RSpec.configure do |config|
2
+ config.before(:each, type: :generator) do
3
+ remove_project_directory
4
+ end
5
+ end
@@ -0,0 +1,13 @@
1
+ module ProjectFiles
2
+ def touch(filename)
3
+ path = File.join(project_path, filename)
4
+ dirname = File.dirname(path)
5
+ FileUtils.mkdir_p(dirname)
6
+ FileUtils.touch(path)
7
+ end
8
+
9
+ def rm(filename)
10
+ path = File.join(project_path, filename)
11
+ FileUtils.rm_rf(path)
12
+ end
13
+ end
data/suspenders.gemspec CHANGED
@@ -29,4 +29,6 @@ weLaika's fork of the famous thoughbot suspenders gem.
29
29
  s.add_dependency 'rails', Suspenders::RAILS_VERSION
30
30
 
31
31
  s.add_development_dependency 'rspec', '~> 3.8'
32
+ s.add_development_dependency 'pry-byebug', '~> 3.6'
33
+ s.add_development_dependency 'awesome_print', '~> 1.8'
32
34
  end
@@ -10,20 +10,18 @@ end
10
10
  ruby '<%= Suspenders::RUBY_VERSION %>'
11
11
 
12
12
  gem 'active_interaction', '~> 3.6'
13
- gem 'autoprefixer-rails'
13
+ gem 'bootsnap', '>= 1.1.0', require: false
14
14
  gem 'coffee-rails', '~> 4.2'
15
15
  gem 'email_validator'
16
- gem 'flutie'
17
16
  gem 'pg', '>= 0.18', '< 2.0'
18
17
  gem 'puma', '~> 3.11'
19
18
  gem 'rack-canonical-host'
20
19
  gem 'rails', '<%= Suspenders::RAILS_VERSION %>'
21
20
  gem 'rails-i18n'
22
21
  gem 'recipient_interceptor'
23
- gem 'sass-rails', '~> 5.0'
22
+ gem 'sassc-rails'
24
23
  gem 'title'
25
24
  gem 'uglifier', '>= 1.3.0'
26
- gem 'bootsnap', '>= 1.1.0', require: false
27
25
  <% if options[:webpack] %>
28
26
  gem 'webpacker'
29
27
  <% end %>
@@ -49,4 +47,4 @@ group :test do
49
47
  gem 'webmock'
50
48
  end
51
49
 
52
- gem 'welaika-suspenders', '~> <%= Suspenders::VERSION %>', group: %i[development test]
50
+ gem 'welaika-suspenders', group: %i[development test]
@@ -1,4 +1,4 @@
1
1
  - if flash.any?
2
2
  .flashes
3
3
  - user_facing_flashes.each do |key, value|
4
- div(class="flash-#{key}")= value
4
+ div(class="flash-#{key}") = value
@@ -1,4 +1,6 @@
1
1
  # frozen_string_literal: true
2
+ #
3
+ FactoryBot.use_parent_strategy = true
2
4
 
3
5
  RSpec.configure do |config|
4
6
  config.include FactoryBot::Syntax::Methods
@@ -13,8 +13,10 @@ variables:
13
13
  - postgres:<%= Suspenders::POSTGRES_VERSION %>
14
14
  - selenium/standalone-chrome:latest
15
15
 
16
- .cache: &gems-cache-settings
17
- key: "gems-$CI_COMMIT_REF_SLUG"
16
+ .cache: &cache-settings
17
+ key: "$CI_COMMIT_REF_SLUG"
18
+ untracked: true
19
+ policy: pull
18
20
  paths:
19
21
  - vendor/bundle
20
22
 
@@ -26,15 +28,15 @@ stages:
26
28
  prepare:
27
29
  stage: setup
28
30
  cache:
29
- <<: *gems-cache-settings
31
+ <<: *cache-settings
32
+ policy: pull-push
30
33
  script:
31
34
  - bundle install --retry 3 --deployment --jobs $(nproc)
32
35
 
33
36
  quality:rubocop:
34
37
  stage: quality
35
38
  cache:
36
- <<: *gems-cache-settings
37
- policy: pull
39
+ <<: *cache-settings
38
40
  script:
39
41
  - bundle check --path vendor/bundle
40
42
  - bundle exec rubocop
@@ -42,8 +44,7 @@ quality:rubocop:
42
44
  quality:slim_lint:
43
45
  stage: quality
44
46
  cache:
45
- <<: *gems-cache-settings
46
- policy: pull
47
+ <<: *cache-settings
47
48
  script:
48
49
  - bundle check --path vendor/bundle
49
50
  - bundle exec slim-lint app/views/
@@ -51,8 +52,7 @@ quality:slim_lint:
51
52
  quality:bundler-audit:
52
53
  stage: quality
53
54
  cache:
54
- <<: *gems-cache-settings
55
- policy: pull
55
+ <<: *cache-settings
56
56
  script:
57
57
  - bundle check --path vendor/bundle
58
58
  - bundle exec bundle-audit check --update
@@ -60,8 +60,7 @@ quality:bundler-audit:
60
60
  quality:brakeman:
61
61
  stage: quality
62
62
  cache:
63
- <<: *gems-cache-settings
64
- policy: pull
63
+ <<: *cache-settings
65
64
  script:
66
65
  - bundle check --path vendor/bundle
67
66
  - bundle exec brakeman -z --skip-files vendor/bundle
@@ -69,8 +68,7 @@ quality:brakeman:
69
68
  quality:rubycritic:
70
69
  stage: quality
71
70
  cache:
72
- <<: *gems-cache-settings
73
- policy: pull
71
+ <<: *cache-settings
74
72
  script:
75
73
  - bundle check --path vendor/bundle
76
74
  - bundle exec rubycritic app/ config/ lib/ --no-browser --minimum-score 94 --format console
@@ -79,12 +77,11 @@ test:rspec:
79
77
  stage: test
80
78
  services: *rails-services
81
79
  cache:
82
- <<: *gems-cache-settings
83
- policy: pull
80
+ <<: *cache-settings
84
81
  script:
85
82
  # Install node
86
83
  - curl -sL https://deb.nodesource.com/setup_10.x | bash -
87
- - apt-get update -qq && apt-get install -qq nodejs
84
+ - apt-get install -qq nodejs
88
85
 
89
86
  # Install yarn
90
87
  - curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
@@ -11,4 +11,4 @@ PreCommit:
11
11
  SlimLint:
12
12
  enabled: true
13
13
  on_warn: fail # Treat all warnings as failures
14
- command: ['bundle', 'exec', 'slim-lint', 'app/views/'] # Invoke within Bundler context
14
+ command: ['bundle', 'exec', 'slim-lint'] # Invoke within Bundler context
@@ -5,6 +5,9 @@
5
5
  .byebug_history
6
6
  /.bundle
7
7
  /.env.local
8
+ /.env.development.local
9
+ /.env.test.local
10
+ /.env.production.local
8
11
  /coverage/*
9
12
  /db/*.sqlite3
10
13
  /db/*.sqlite3-journal
@@ -2,18 +2,17 @@ doctype html
2
2
  html lang=I18n.locale
3
3
  head
4
4
  meta charset="utf-8"
5
- meta name="ROBOTS" content="NOODP"
6
5
  meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"
7
6
 
8
7
  / Configure default and controller-, and view-specific titles in
9
8
  config/locales/en.yml. For more see:
10
9
  https://github.com/calebthompson/title#usage
11
10
 
12
- title= title
11
+ title = title
13
12
  = stylesheet_link_tag :application, media: 'all'
14
13
  = csrf_meta_tags
15
14
  = csp_meta_tag
16
- body class=body_class
15
+ body
17
16
  = render 'flashes'
18
17
  = yield
19
18
  = render 'javascript'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: welaika-suspenders
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.29.0
4
+ version: 2.30.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - thoughtbot
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2018-10-02 00:00:00.000000000 Z
12
+ date: 2019-03-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -17,14 +17,14 @@ dependencies:
17
17
  requirements:
18
18
  - - "~>"
19
19
  - !ruby/object:Gem::Version
20
- version: 5.2.1
20
+ version: 5.2.2
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - "~>"
26
26
  - !ruby/object:Gem::Version
27
- version: 5.2.1
27
+ version: 5.2.2
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: rspec
30
30
  requirement: !ruby/object:Gem::Requirement
@@ -39,6 +39,34 @@ dependencies:
39
39
  - - "~>"
40
40
  - !ruby/object:Gem::Version
41
41
  version: '3.8'
42
+ - !ruby/object:Gem::Dependency
43
+ name: pry-byebug
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - "~>"
47
+ - !ruby/object:Gem::Version
48
+ version: '3.6'
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - "~>"
54
+ - !ruby/object:Gem::Version
55
+ version: '3.6'
56
+ - !ruby/object:Gem::Dependency
57
+ name: awesome_print
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - "~>"
61
+ - !ruby/object:Gem::Version
62
+ version: '1.8'
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '1.8'
42
70
  description: 'weLaika''s fork of the famous thoughbot suspenders gem.
43
71
 
44
72
  '
@@ -72,18 +100,23 @@ files:
72
100
  - lib/suspenders/adapters/heroku.rb
73
101
  - lib/suspenders/app_builder.rb
74
102
  - lib/suspenders/generators/app_generator.rb
103
+ - lib/suspenders/generators/base.rb
75
104
  - lib/suspenders/generators/ci_generator.rb
76
105
  - lib/suspenders/generators/db_optimizations_generator.rb
77
106
  - lib/suspenders/generators/decorator_generator.rb
78
107
  - lib/suspenders/generators/factories_generator.rb
79
108
  - lib/suspenders/generators/faker_generator.rb
80
109
  - lib/suspenders/generators/js_driver_generator.rb
110
+ - lib/suspenders/generators/json_generator.rb
81
111
  - lib/suspenders/generators/lint_generator.rb
112
+ - lib/suspenders/generators/production/deployment_generator.rb
82
113
  - lib/suspenders/generators/production/email_generator.rb
83
114
  - lib/suspenders/generators/production/error_reporting_generator.rb
84
115
  - lib/suspenders/generators/production/force_tls_generator.rb
116
+ - lib/suspenders/generators/production/manifest_generator.rb
85
117
  - lib/suspenders/generators/production/timeout_generator.rb
86
118
  - lib/suspenders/generators/security_generator.rb
119
+ - lib/suspenders/generators/staging/pull_requests_generator.rb
87
120
  - lib/suspenders/generators/static_generator.rb
88
121
  - lib/suspenders/generators/stylesheet_base_generator.rb
89
122
  - lib/suspenders/generators/testing_generator.rb
@@ -95,13 +128,20 @@ files:
95
128
  - spec/features/api_spec.rb
96
129
  - spec/features/cli_help_spec.rb
97
130
  - spec/features/heroku_spec.rb
131
+ - spec/features/json_spec.rb
98
132
  - spec/features/new_project_spec.rb
133
+ - spec/features/production/deployment_spec.rb
99
134
  - spec/features/production/email_spec.rb
135
+ - spec/features/production/manifest_spec.rb
136
+ - spec/features/staging/pull_requests_spec.rb
100
137
  - spec/spec_helper.rb
138
+ - spec/support/be_executable_matcher.rb
101
139
  - spec/support/contain_json_matcher.rb
102
140
  - spec/support/exist_as_a_file_matcher.rb
103
141
  - spec/support/fake_heroku.rb
142
+ - spec/support/generators.rb
104
143
  - spec/support/match_contents_matcher.rb
144
+ - spec/support/project_files.rb
105
145
  - spec/support/suspenders.rb
106
146
  - suspenders.gemspec
107
147
  - templates/Gemfile.erb
@@ -111,12 +151,10 @@ files:
111
151
  - templates/_flashes.html.slim
112
152
  - templates/_javascript.html.slim
113
153
  - templates/action_mailer.rb
114
- - templates/app.json.erb
115
154
  - templates/application.sass
116
155
  - templates/bin_deploy
117
156
  - templates/bin_setup
118
157
  - templates/bin_setup_review_app.erb
119
- - templates/browserslist
120
158
  - templates/chromedriver.rb
121
159
  - templates/config_locales_it.yml.erb
122
160
  - templates/database.gitlab.yml
@@ -166,15 +204,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
166
204
  requirements:
167
205
  - - ">="
168
206
  - !ruby/object:Gem::Version
169
- version: 2.5.1
207
+ version: 2.6.1
170
208
  required_rubygems_version: !ruby/object:Gem::Requirement
171
209
  requirements:
172
210
  - - ">="
173
211
  - !ruby/object:Gem::Version
174
212
  version: 2.7.4
175
213
  requirements: []
176
- rubyforge_project:
177
- rubygems_version: 2.7.7
214
+ rubygems_version: 3.0.1
178
215
  signing_key:
179
216
  specification_version: 4
180
217
  summary: Generate a Rails app using thoughtbot's best practices.
@@ -184,11 +221,18 @@ test_files:
184
221
  - spec/features/api_spec.rb
185
222
  - spec/features/cli_help_spec.rb
186
223
  - spec/features/heroku_spec.rb
224
+ - spec/features/json_spec.rb
187
225
  - spec/features/new_project_spec.rb
226
+ - spec/features/production/deployment_spec.rb
188
227
  - spec/features/production/email_spec.rb
228
+ - spec/features/production/manifest_spec.rb
229
+ - spec/features/staging/pull_requests_spec.rb
189
230
  - spec/spec_helper.rb
231
+ - spec/support/be_executable_matcher.rb
190
232
  - spec/support/contain_json_matcher.rb
191
233
  - spec/support/exist_as_a_file_matcher.rb
192
234
  - spec/support/fake_heroku.rb
235
+ - spec/support/generators.rb
193
236
  - spec/support/match_contents_matcher.rb
237
+ - spec/support/project_files.rb
194
238
  - spec/support/suspenders.rb
@@ -1,27 +0,0 @@
1
- {
2
- "name":"<%= app_name.dasherize %>",
3
- "scripts":{},
4
- "env":{
5
- "APPLICATION_HOST":{
6
- "required":true
7
- },
8
- "EMAIL_RECIPIENTS":{
9
- "required":true
10
- },
11
- "HEROKU_APP_NAME": {
12
- "required":true
13
- },
14
- "HEROKU_PARENT_APP_NAME": {
15
- "required":true
16
- },
17
- "RACK_ENV":{
18
- "required":true
19
- },
20
- "SECRET_KEY_BASE":{
21
- "generator":"secret"
22
- }
23
- },
24
- "addons":[
25
- "heroku-postgresql"
26
- ]
27
- }
@@ -1,3 +0,0 @@
1
- Last 2 versions
2
- Explorer >= 11
3
- Android >= 4.4