potassium 6.1.0 → 6.2.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.
@@ -10,8 +10,8 @@ class Recipes::Schedule < Rails::AppBuilder
10
10
  if selected?(:schedule)
11
11
  gather_gem 'sidekiq-scheduler', '>= 3.0.1'
12
12
  add_readme_section :internal_dependencies, :sidekiq_scheduler
13
+ append_schedule_section_to_yml
13
14
  end
14
- template '../assets/sidekiq_scheduler.yml', 'config/sidekiq.yml', force: true
15
15
  end
16
16
 
17
17
  def install
@@ -22,4 +22,19 @@ class Recipes::Schedule < Rails::AppBuilder
22
22
  def installed?
23
23
  gem_exists?(/sidekiq-scheduler/) && file_exist?('config/sidekiq.yml')
24
24
  end
25
+
26
+ private
27
+
28
+ def append_schedule_section_to_yml
29
+ append_to_file(
30
+ 'config/sidekiq.yml',
31
+ <<-HERE.gsub(/^ {8}/, '')
32
+ # :schedule:
33
+ # an_scheduled_task:
34
+ # cron: '0 * * * * *' # Runs once per minute
35
+ # class: ExampleJob
36
+ # args: ['a', 'b']
37
+ HERE
38
+ )
39
+ end
25
40
  end
@@ -13,10 +13,10 @@ class Recipes::Style < Rails::AppBuilder
13
13
 
14
14
  def add_linters
15
15
  gather_gems(:development, :test) do
16
- gather_gem 'rubocop', '~> 0.82.0'
16
+ gather_gem 'rubocop', Potassium::RUBOCOP_VERSION
17
17
  gather_gem 'rubocop-performance'
18
18
  gather_gem 'rubocop-rails'
19
- gather_gem 'rubocop-rspec'
19
+ gather_gem 'rubocop-rspec', Potassium::RUBOCOP_RSPEC_VERSION
20
20
  end
21
21
  run 'bin/yarn add --dev stylelint eslint eslint-plugin-import'
22
22
  run 'bin/yarn add --dev eslint-plugin-vue' if selected?(:front_end, :vue)
@@ -20,6 +20,7 @@ run_action(:asking) do
20
20
  ask :database
21
21
  ask :devise
22
22
  ask :admin
23
+ ask :google_tag_manager
23
24
  ask :front_end
24
25
  ask :vue_admin
25
26
  ask :mailer
@@ -76,6 +77,7 @@ run_action(:recipe_loading) do
76
77
  create :github
77
78
  create :cleanup
78
79
  create :front_end
80
+ create :google_tag_manager
79
81
  end
80
82
 
81
83
  info "Gathered enough information. Applying the template. Wait a minute."
@@ -1,8 +1,9 @@
1
1
  module Potassium
2
- VERSION = "6.1.0"
2
+ VERSION = "6.2.0"
3
3
  RUBY_VERSION = "2.7.0"
4
4
  RAILS_VERSION = "~> 6.0.2"
5
- RUBOCOP_VERSION = "~> 0.65.0"
5
+ RUBOCOP_VERSION = "~> 1.9"
6
+ RUBOCOP_RSPEC_VERSION = "~> 2.2"
6
7
  POSTGRES_VERSION = "11.3"
7
8
  MYSQL_VERSION = "5.7"
8
9
  NODE_VERSION = "12"
data/potassium.gemspec CHANGED
@@ -24,7 +24,9 @@ Gem::Specification.new do |spec|
24
24
  spec.add_development_dependency "rspec", "~> 3.4.0"
25
25
  spec.add_development_dependency "rspec_junit_formatter"
26
26
  spec.add_development_dependency "rubocop", Potassium::RUBOCOP_VERSION
27
- spec.add_development_dependency "rubocop-rspec"
27
+ spec.add_development_dependency "rubocop-performance"
28
+ spec.add_development_dependency "rubocop-rails"
29
+ spec.add_development_dependency "rubocop-rspec", Potassium::RUBOCOP_RSPEC_VERSION
28
30
  spec.add_runtime_dependency "gems", "~> 0.8"
29
31
  spec.add_runtime_dependency "gli", "~> 2.12.2"
30
32
  spec.add_runtime_dependency "inquirer", "~> 0.2"
@@ -2,11 +2,11 @@ require "spec_helper"
2
2
  require 'yaml'
3
3
 
4
4
  RSpec.describe "BackgroundProcessor" do
5
- context "working with sidekiq" do
5
+ context "when working with sidekiq and no mailer" do
6
6
  before :all do
7
7
  drop_dummy_database
8
8
  remove_project_directory
9
- create_dummy_project("background_processor" => "sidekiq", "heroku" => true)
9
+ create_dummy_project("background_processor" => true, "heroku" => true)
10
10
  end
11
11
 
12
12
  it "adds sidekiq gem to Gemfile" do
@@ -52,9 +52,11 @@ RSpec.describe "BackgroundProcessor" do
52
52
  expect(content).to include("require 'sidekiq'")
53
53
  end
54
54
 
55
- it "adds sidekiq.yml file" do
56
- content = IO.read("#{project_path}/config/sidekiq.yml")
57
- expect(content).to include("concurrency: 5")
55
+ it "adds sidekiq.yml file with no mailer queue" do
56
+ yml_path = "#{project_path}/config/sidekiq.yml"
57
+ content = IO.read(yml_path)
58
+ expect(File.exist?(yml_path)).to be true
59
+ expect(content).not_to include("- mailers")
58
60
  end
59
61
 
60
62
  it "adds redis.yml file" do
@@ -0,0 +1,59 @@
1
+ require "spec_helper"
2
+
3
+ RSpec.describe "Google Tag Manager" do
4
+ before :all do
5
+ remove_project_directory
6
+ create_dummy_project('google_tag_manager' => true)
7
+ end
8
+
9
+ let(:gtm_head_file_path) do
10
+ "#{project_path}/app/views/shared/_gtm_head.html.erb"
11
+ end
12
+ let(:gtm_body_file_path) do
13
+ "#{project_path}/app/views/shared/_gtm_body.html.erb"
14
+ end
15
+ let(:content_security_policy_file_path) do
16
+ "#{project_path}/config/initializers/content_security_policy.rb"
17
+ end
18
+ let(:application_layout_file) do
19
+ IO.read("#{project_path}/app/views/layouts/application.html.erb")
20
+ end
21
+ let(:content_security_policy_file) do
22
+ IO.read(content_security_policy_file_path)
23
+ end
24
+
25
+ it 'adds google tag manager script' do
26
+ expect(File).to be_file(gtm_head_file_path)
27
+ expect(File).to be_file(gtm_body_file_path)
28
+ expect(application_layout_file).to include('shared/gtm_head')
29
+ expect(application_layout_file).to include('shared/gtm_body')
30
+ end
31
+
32
+ it 'add content security policy' do
33
+ expect(content_security_policy_file)
34
+ .to include(content_security_policy_code)
35
+ end
36
+
37
+ def content_security_policy_code
38
+ <<~HERE
39
+ Rails.application.config.content_security_policy do |policy|
40
+ if Rails.env.development?
41
+ policy.connect_src :self, :https, 'http://localhost:3035', 'ws://localhost:3035'
42
+ policy.script_src :self, :https, :unsafe_eval
43
+ else
44
+ policy.script_src :self, :https
45
+ # google tag manager requires to enable unsafe inline:
46
+ # https://developers.google.com/tag-manager/web/csp
47
+ policy.connect_src :self, :https, 'https://www.google-analytics.com'
48
+ policy.script_src :self,
49
+ :https,
50
+ :unsafe_inline,
51
+ 'https://www.googletagmanager.com',
52
+ 'https://www.google-analytics.com',
53
+ 'https://ssl.google-analytics.com'
54
+ policy.img_src :self, :https, 'https://www.googletagmanager.com', 'https://www.google-analytics.com'
55
+ end
56
+ end
57
+ HERE
58
+ end
59
+ end
@@ -4,6 +4,7 @@ RSpec.describe "Mailer" do
4
4
  let(:gemfile) { IO.read("#{project_path}/Gemfile") }
5
5
  let(:mailer_config) { IO.read("#{project_path}/config/mailer.rb") }
6
6
  let(:dev_config) { IO.read("#{project_path}/config/environments/development.rb") }
7
+ let(:sidekiq_config) { IO.read("#{project_path}/config/sidekiq.yml") }
7
8
 
8
9
  before(:all) { drop_dummy_database }
9
10
 
@@ -26,6 +27,8 @@ RSpec.describe "Mailer" do
26
27
  expect(dev_config).to include("sendgrid_dev_settings = {")
27
28
  expect(dev_config).to include("api_key: ENV['SENDGRID_API_KEY']")
28
29
  end
30
+
31
+ it { expect(sidekiq_config).to include("- mailers") }
29
32
  end
30
33
 
31
34
  context "when selecting aws_ses as mailer" do
@@ -38,5 +41,18 @@ RSpec.describe "Mailer" do
38
41
  it { expect(gemfile).to include("letter_opener") }
39
42
  it { expect(mailer_config).to include("delivery_method = :aws_sdk") }
40
43
  it { expect(dev_config).to include("delivery_method = :letter_opener") }
44
+ it { expect(sidekiq_config).to include("- mailers") }
45
+ end
46
+
47
+ context "when selecting a mailer and sidekiq" do
48
+ before :all do
49
+ drop_dummy_database
50
+ remove_project_directory
51
+ create_dummy_project(
52
+ "background_processor" => true, "email_service" => 'sendgrid'
53
+ )
54
+ end
55
+
56
+ it { expect(sidekiq_config).to include("- mailers") }
41
57
  end
42
58
  end
@@ -1,10 +1,14 @@
1
1
  require "spec_helper"
2
2
 
3
3
  RSpec.describe "schedule" do
4
+ let(:sidekiq_config) { IO.read("#{project_path}/config/sidekiq.yml") }
5
+
4
6
  before :all do
5
7
  drop_dummy_database
6
8
  remove_project_directory
7
- create_dummy_project("schedule" => true)
9
+ create_dummy_project(
10
+ "schedule" => true, "background_processor" => true, "email_service" => "sendgrid"
11
+ )
8
12
  end
9
13
 
10
14
  it "adds the sidekiq-scheduler gem to Gemfile" do
@@ -12,9 +16,12 @@ RSpec.describe "schedule" do
12
16
  expect(gemfile_content).to include("gem 'sidekiq-scheduler'")
13
17
  end
14
18
 
15
- it "creates the config with schedule" do
16
- initializer_content = IO.read("#{project_path}/config/sidekiq.yml")
17
- expect(initializer_content).to include(":schedule:")
19
+ it "adds schedule section to sidekiq config" do
20
+ expect(sidekiq_config).to include(":schedule:")
21
+ end
22
+
23
+ it "doesn't remove mailers queue" do
24
+ expect(sidekiq_config).to include("- mailers")
18
25
  end
19
26
 
20
27
  it "adds scheduler ui to the sidekiq initializer" do
@@ -22,7 +22,6 @@ module PotassiumTestHelpers
22
22
  add_project_bin_to_path
23
23
  full_arguments = hash_to_arguments(create_arguments(true).merge(arguments))
24
24
  run_command("#{potassium_bin} create #{APP_NAME} #{full_arguments}")
25
- on_project { run_command("hound rules update ruby --local") }
26
25
  end
27
26
  end
28
27
  end
data/tmp/.keep ADDED
File without changes
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: potassium
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.1.0
4
+ version: 6.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - juliogarciag
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-01-22 00:00:00.000000000 Z
11
+ date: 2021-03-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -86,16 +86,30 @@ dependencies:
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: 0.65.0
89
+ version: '1.9'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: 0.65.0
96
+ version: '1.9'
97
97
  - !ruby/object:Gem::Dependency
98
- name: rubocop-rspec
98
+ name: rubocop-performance
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: rubocop-rails
99
113
  requirement: !ruby/object:Gem::Requirement
100
114
  requirements:
101
115
  - - ">="
@@ -108,6 +122,20 @@ dependencies:
108
122
  - - ">="
109
123
  - !ruby/object:Gem::Version
110
124
  version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: rubocop-rspec
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '2.2'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '2.2'
111
139
  - !ruby/object:Gem::Dependency
112
140
  name: gems
113
141
  requirement: !ruby/object:Gem::Requirement
@@ -220,6 +248,7 @@ files:
220
248
  - ".gitignore"
221
249
  - ".node-version"
222
250
  - ".rspec"
251
+ - ".rubocop.yml"
223
252
  - ".ruby-version"
224
253
  - CHANGELOG.md
225
254
  - Gemfile
@@ -269,6 +298,8 @@ files:
269
298
  - lib/potassium/assets/app/mailers/application_mailer.rb
270
299
  - lib/potassium/assets/app/uploaders/base_uploader.rb
271
300
  - lib/potassium/assets/app/uploaders/image_uploader.rb
301
+ - lib/potassium/assets/app/views/shared/_gtm_body.html.erb
302
+ - lib/potassium/assets/app/views/shared/_gtm_head.html.erb
272
303
  - lib/potassium/assets/bin/cibuild.erb
273
304
  - lib/potassium/assets/bin/release
274
305
  - lib/potassium/assets/bin/setup.erb
@@ -295,7 +326,6 @@ files:
295
326
  - lib/potassium/assets/seeds/seeds.rb
296
327
  - lib/potassium/assets/sidekiq.rb.erb
297
328
  - lib/potassium/assets/sidekiq.yml
298
- - lib/potassium/assets/sidekiq_scheduler.yml
299
329
  - lib/potassium/assets/testing/.rspec
300
330
  - lib/potassium/assets/testing/platanus.png
301
331
  - lib/potassium/assets/testing/rails_helper.rb
@@ -337,6 +367,7 @@ files:
337
367
  - lib/potassium/recipes/file_storage.rb
338
368
  - lib/potassium/recipes/front_end.rb
339
369
  - lib/potassium/recipes/github.rb
370
+ - lib/potassium/recipes/google_tag_manager.rb
340
371
  - lib/potassium/recipes/heroku.rb
341
372
  - lib/potassium/recipes/i18n.rb
342
373
  - lib/potassium/recipes/listen.rb
@@ -379,6 +410,7 @@ files:
379
410
  - spec/features/file_storage_spec.rb
380
411
  - spec/features/front_end_spec.rb
381
412
  - spec/features/github_spec.rb
413
+ - spec/features/google_tag_manager_spec.rb
382
414
  - spec/features/graphql_spec.rb
383
415
  - spec/features/heroku_spec.rb
384
416
  - spec/features/i18n_spec.rb
@@ -393,11 +425,12 @@ files:
393
425
  - spec/support/fake_heroku.rb
394
426
  - spec/support/fake_octokit.rb
395
427
  - spec/support/potassium_test_helpers.rb
428
+ - tmp/.keep
396
429
  homepage: https://github.com/platanus/potassium
397
430
  licenses:
398
431
  - MIT
399
432
  metadata: {}
400
- post_install_message:
433
+ post_install_message:
401
434
  rdoc_options: []
402
435
  require_paths:
403
436
  - lib
@@ -413,7 +446,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
413
446
  version: '0'
414
447
  requirements: []
415
448
  rubygems_version: 3.1.2
416
- signing_key:
449
+ signing_key:
417
450
  specification_version: 4
418
451
  summary: An application generator from Platanus
419
452
  test_files:
@@ -430,6 +463,7 @@ test_files:
430
463
  - spec/features/file_storage_spec.rb
431
464
  - spec/features/front_end_spec.rb
432
465
  - spec/features/github_spec.rb
466
+ - spec/features/google_tag_manager_spec.rb
433
467
  - spec/features/graphql_spec.rb
434
468
  - spec/features/heroku_spec.rb
435
469
  - spec/features/i18n_spec.rb
@@ -1,9 +0,0 @@
1
- production:
2
- :concurrency: 5
3
- :queues:
4
- - default
5
- # :schedule:
6
- # an_scheduled_task:
7
- # cron: '0 * * * * *' # Runs once per minute
8
- # class: ExampleJob
9
- # args: ['a', 'b']