potassium 6.7.0 → 7.0.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.
Files changed (78) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +23 -0
  3. data/README.md +8 -1
  4. data/lib/potassium/assets/.circleci/config.yml.erb +14 -8
  5. data/lib/potassium/assets/.eslintrc.json +13 -7
  6. data/lib/potassium/assets/.rubocop.yml +62 -1
  7. data/lib/potassium/assets/README.yml +3 -9
  8. data/lib/potassium/assets/app/frontend/active_admin/jquery.js +2 -0
  9. data/lib/potassium/assets/app/frontend/api/__mocks__/index.mock.ts +3 -0
  10. data/lib/potassium/assets/app/frontend/api/index.ts +63 -0
  11. data/lib/potassium/assets/app/frontend/css/application.css +3 -0
  12. data/lib/potassium/assets/app/frontend/entrypoints/active_admin.js +7 -0
  13. data/lib/potassium/assets/app/frontend/entrypoints/active_admin.scss +38 -0
  14. data/lib/potassium/assets/app/frontend/entrypoints/application.js +12 -0
  15. data/lib/potassium/assets/app/{javascript → frontend}/types/vue.d.ts +1 -0
  16. data/lib/potassium/assets/app/{javascript → frontend}/utils/case-converter.ts +2 -2
  17. data/lib/potassium/assets/app/frontend/utils/csrf-token.ts +9 -0
  18. data/lib/potassium/assets/bin/setup.erb +1 -1
  19. data/lib/potassium/assets/bin/update.erb +1 -1
  20. data/lib/potassium/assets/config/sentry.rb.erb +2 -10
  21. data/lib/potassium/assets/lib/dotenv_monkeypatch.rb +19 -0
  22. data/lib/potassium/assets/package.json +7 -0
  23. data/lib/potassium/assets/tailwind.config.js +14 -0
  24. data/lib/potassium/assets/testing/simplecov_config.rb +9 -1
  25. data/lib/potassium/assets/tsconfig.config.json +8 -0
  26. data/lib/potassium/assets/tsconfig.json +11 -27
  27. data/lib/potassium/assets/vite.config.ts +46 -0
  28. data/lib/potassium/cli_options.rb +6 -4
  29. data/lib/potassium/platanus_config.rb +1 -1
  30. data/lib/potassium/recipes/admin.rb +42 -72
  31. data/lib/potassium/recipes/background_processor.rb +1 -1
  32. data/lib/potassium/recipes/bullet.rb +41 -0
  33. data/lib/potassium/recipes/ci.rb +1 -0
  34. data/lib/potassium/recipes/cleanup.rb +0 -1
  35. data/lib/potassium/recipes/coverage.rb +4 -27
  36. data/lib/potassium/recipes/database_container.rb +1 -1
  37. data/lib/potassium/recipes/error_reporting.rb +2 -2
  38. data/lib/potassium/recipes/front_end_vite.rb +153 -0
  39. data/lib/potassium/recipes/google_tag_manager.rb +19 -23
  40. data/lib/potassium/recipes/mjml.rb +1 -1
  41. data/lib/potassium/recipes/node.rb +1 -1
  42. data/lib/potassium/recipes/style.rb +3 -5
  43. data/lib/potassium/recipes/vue_admin.rb +7 -13
  44. data/lib/potassium/recipes/yarn.rb +1 -1
  45. data/lib/potassium/templates/application.rb +4 -8
  46. data/lib/potassium/version.rb +6 -6
  47. data/spec/features/api_spec.rb +2 -2
  48. data/spec/features/background_processor_spec.rb +2 -2
  49. data/spec/features/bullet_spec.rb +29 -0
  50. data/spec/features/ci_spec.rb +10 -4
  51. data/spec/features/coverage_spec.rb +7 -6
  52. data/spec/features/database_container_spec.rb +1 -1
  53. data/spec/features/database_spec.rb +1 -1
  54. data/spec/features/draper_spec.rb +1 -1
  55. data/spec/features/error_reporting_spec.rb +2 -2
  56. data/spec/features/file_storage_spec.rb +4 -4
  57. data/spec/features/google_tag_manager_spec.rb +1 -1
  58. data/spec/features/i18n_spec.rb +1 -1
  59. data/spec/features/mailer_spec.rb +1 -0
  60. data/spec/features/new_project_spec.rb +1 -1
  61. data/spec/features/power_types_spec.rb +1 -1
  62. data/spec/features/pundit_spec.rb +1 -1
  63. data/spec/features/schedule_spec.rb +1 -1
  64. data/spec/features/testing_spec.rb +0 -1
  65. data/spec/features/vue_admin_spec.rb +1 -1
  66. data/spec/front_end_vite_spec.rb +81 -0
  67. metadata +26 -18
  68. data/lib/potassium/assets/app/javascript/api/index.ts +0 -55
  69. data/lib/potassium/assets/config/webpack/rules/css.js +0 -5
  70. data/lib/potassium/assets/config/webpack/rules/index.js +0 -11
  71. data/lib/potassium/assets/config/webpack/rules/jquery.js +0 -11
  72. data/lib/potassium/assets/config/webpack/rules/typescript.js +0 -32
  73. data/lib/potassium/assets/config/webpack/rules/vue.js +0 -19
  74. data/lib/potassium/assets/config/webpack/webpack.config.js +0 -4
  75. data/lib/potassium/recipes/front_end.rb +0 -270
  76. data/spec/features/front_end_spec.rb +0 -76
  77. /data/lib/potassium/assets/app/{javascript → frontend}/components/app.spec.ts +0 -0
  78. /data/lib/potassium/assets/app/{javascript → frontend}/components/app.vue +0 -0
@@ -11,7 +11,7 @@ RSpec.describe "BackgroundProcessor" do
11
11
 
12
12
  it "adds sidekiq gem to Gemfile" do
13
13
  gemfile_content = IO.read("#{project_path}/Gemfile")
14
- expect(gemfile_content).to include("gem 'sidekiq'")
14
+ expect(gemfile_content).to include("sidekiq")
15
15
  end
16
16
 
17
17
  it "adds queue_adapter to application.rb" do
@@ -43,7 +43,7 @@ RSpec.describe "BackgroundProcessor" do
43
43
  content = IO.read("#{project_path}/.env.development")
44
44
  expect(content).to include("DB_POOL=25")
45
45
  expect(content).to include('REDIS_HOST=127.0.0.1')
46
- expect(content).to include('REDIS_PORT=$(make services-port SERVICE=redis PORT=6379)')
46
+ expect(content).to include('REDIS_PORT=COMMAND_EXPAND(make services-port SERVICE=redis PORT=6379)')
47
47
  expect(content).to include('REDIS_URL=redis://${REDIS_HOST}:${REDIS_PORT}/1')
48
48
  end
49
49
 
@@ -0,0 +1,29 @@
1
+ require "spec_helper"
2
+
3
+ RSpec.describe "Bullet" do
4
+ before(:all) do
5
+ drop_dummy_database
6
+ remove_project_directory
7
+ create_dummy_project
8
+ end
9
+
10
+ context "with all the bullet config" do
11
+ let(:dev_config) { IO.read("#{project_path}/config/environments/development.rb") }
12
+
13
+ it { expect(dev_config).to include("config.after_initialize do") }
14
+ it { expect(dev_config).to include("Bullet.enable = true") }
15
+ it { expect(dev_config).to include("Bullet.alert = true") }
16
+ it { expect(dev_config).to include("Bullet.bullet_logger = true") }
17
+ it { expect(dev_config).to include("Bullet.console = true") }
18
+ it { expect(dev_config).to include("Bullet.rails_logger = true") }
19
+ it { expect(dev_config).to include("Bullet.add_footer = true") }
20
+ end
21
+
22
+ context "with bullet application job config" do
23
+ let(:application_job) { IO.read("#{project_path}/app/jobs/application_job.rb") }
24
+
25
+ it 'adds bullet configuration to application_job.rb' do
26
+ expect(application_job).to include(" include Bullet::ActiveJob if Rails.env.development?\n")
27
+ end
28
+ end
29
+ end
@@ -2,6 +2,11 @@ require "spec_helper"
2
2
  require "rubocop"
3
3
 
4
4
  RSpec.describe 'CI' do
5
+ let(:ci_config) do
6
+ yml_path = "#{project_path}/.circleci/config.yml"
7
+ IO.read(yml_path)
8
+ end
9
+
5
10
  before(:all) do
6
11
  drop_dummy_database
7
12
  remove_project_directory
@@ -9,9 +14,10 @@ RSpec.describe 'CI' do
9
14
  end
10
15
 
11
16
  it "correctly bundles the config file" do
12
- yml_path = "#{project_path}/.circleci/config.yml"
13
- content = IO.read(yml_path)
14
- expect(File.exist?(yml_path)).to be true
15
- expect(content).to include('cimg/ruby', 'cache', 'rspec', 'reviewdog')
17
+ expect(ci_config).to include('cimg/ruby', 'cache', 'rspec', 'reviewdog')
18
+ end
19
+
20
+ it "adds repo analyzer config" do
21
+ expect(ci_config).to include('bin/rake "repo_analyzer:analyze[platanus/dummy_app]"')
16
22
  end
17
23
  end
@@ -9,9 +9,9 @@ RSpec.describe "Coverage" do
9
9
 
10
10
  it "adds simplecov related gems to Gemfile" do
11
11
  content = IO.read("#{project_path}/Gemfile")
12
- expect(content).to include("gem 'simplecov'")
13
- expect(content).to include("gem 'simplecov_linter_formatter'")
14
- expect(content).to include("gem 'simplecov_text_formatter'")
12
+ expect(content).to include("simplecov")
13
+ expect(content).to include("simplecov_linter_formatter")
14
+ expect(content).to include("simplecov_text_formatter")
15
15
  end
16
16
 
17
17
  it "requires simplecov config file before rails" do
@@ -26,14 +26,15 @@ RSpec.describe "Coverage" do
26
26
 
27
27
  context "with vue" do
28
28
  let(:node_modules_file) { IO.read("#{project_path}/package.json") }
29
+ let(:vite_config) { IO.read("#{project_path}/vite.config.ts") }
29
30
 
30
31
  before(:all) do
31
32
  remove_project_directory
32
- create_dummy_project("front_end" => "vue")
33
+ create_dummy_project("front_end_vite" => true)
33
34
  end
34
35
 
35
- it "adds jest coverage configuration" do
36
- expect(node_modules_file).to include('"collectCoverage": true')
36
+ it "adds vitest coverage configuration" do
37
+ expect(vite_config).to include("provider: 'c8',")
37
38
  end
38
39
 
39
40
  it "adds jest text formatter package" do
@@ -25,7 +25,7 @@ RSpec.describe "DatabaseContainer" do
25
25
  db_port = compose_content[:services][service_name][:ports].first
26
26
 
27
27
  expect(env_file)
28
- .to include("DB_PORT=$(make services-port SERVICE=#{service_name} PORT=#{db_port})")
28
+ .to include("DB_PORT=COMMAND_EXPAND(make services-port SERVICE=#{service_name} PORT=#{db_port})")
29
29
  expect(env_file).to include("DB_HOST=127.0.0.1")
30
30
  expect(File.exist?("#{project_path}/Makefile")).to be true
31
31
  expect(setup_file).to include("docker-compose up -d")
@@ -9,6 +9,6 @@ RSpec.describe "Database" do
9
9
 
10
10
  it "adds the Strong Migrations gem to Gemfile" do
11
11
  gemfile_content = IO.read("#{project_path}/Gemfile")
12
- expect(gemfile_content).to include("gem 'strong_migrations'")
12
+ expect(gemfile_content).to include("strong_migrations")
13
13
  end
14
14
  end
@@ -9,7 +9,7 @@ RSpec.describe "Draper" do
9
9
 
10
10
  it "adds the Draper gem to Gemfile" do
11
11
  gemfile_content = IO.read("#{project_path}/Gemfile")
12
- expect(gemfile_content).to include("gem 'draper'")
12
+ expect(gemfile_content).to include("draper")
13
13
  end
14
14
 
15
15
  it "adds the Draper brief to README file" do
@@ -10,13 +10,13 @@ RSpec.describe "Error Reporting" do
10
10
  it "adds the Sentry gem to Gemfile" do
11
11
  gemfile_content = IO.read("#{project_path}/Gemfile")
12
12
 
13
- expect(gemfile_content).to include("gem 'sentry-raven'")
13
+ expect(gemfile_content).to include("sentry-rails")
14
14
  end
15
15
 
16
16
  it "creates the initializer" do
17
17
  initializer_content = IO.read("#{project_path}/config/initializers/sentry.rb")
18
18
 
19
- expect(initializer_content).to include("Raven.configure")
19
+ expect(initializer_content).to include("Sentry.init")
20
20
  end
21
21
 
22
22
  it "adds the environment variable to .env.development" do
@@ -10,7 +10,7 @@ RSpec.describe "File Storage" do
10
10
 
11
11
  it "adds the aws-sdk-s3 gem to Gemfile" do
12
12
  gemfile_content = IO.read("#{project_path}/Gemfile")
13
- expect(gemfile_content).to include("gem 'aws-sdk-s3'")
13
+ expect(gemfile_content).to include("aws-sdk-s3")
14
14
  end
15
15
 
16
16
  it "customizes config file" do
@@ -43,9 +43,9 @@ RSpec.describe "File Storage" do
43
43
  shared_examples 'common shrine setup' do
44
44
  it "adds the aws-sdk-s3, shrine and marcel gems to Gemfile" do
45
45
  gemfile_content = IO.read("#{project_path}/Gemfile")
46
- expect(gemfile_content).to include("gem 'aws-sdk-s3'")
47
- expect(gemfile_content).to include("gem 'shrine'")
48
- expect(gemfile_content).to include("gem 'marcel'")
46
+ expect(gemfile_content).to include("aws-sdk-s3")
47
+ expect(gemfile_content).to include("shrine")
48
+ expect(gemfile_content).to include("marcel")
49
49
  end
50
50
 
51
51
  it "adds brief to README file" do
@@ -31,6 +31,6 @@ RSpec.describe "Google Tag Manager" do
31
31
 
32
32
  it 'add content security policy' do
33
33
  expect(content_security_policy_file)
34
- .to include("\nRails.application.config.content_security_policy do |policy|")
34
+ .to include("https://developers.google.com/tag-manager/web/csp")
35
35
  end
36
36
  end
@@ -10,7 +10,7 @@ RSpec.describe "I18n" do
10
10
  it "adds the Clockwork gem to Gemfile" do
11
11
  content = IO.read("#{project_path}/Gemfile")
12
12
 
13
- expect(content).to include("gem 'rails-i18n'")
13
+ expect(content).to include("rails-i18n")
14
14
  end
15
15
 
16
16
  it "configures application.rb" do
@@ -102,3 +102,4 @@ RSpec.describe "Mailer" do
102
102
  end
103
103
  end
104
104
  end
105
+ # rubocop:enable Rspec/MultipleMemoizedHelpers
@@ -23,7 +23,7 @@ RSpec.describe "A new project" do
23
23
  gemfile = IO.read("#{project_path}/Gemfile")
24
24
 
25
25
  expect(database_config_file).to include(%{adapter: postgresql})
26
- expect(gemfile).to include %{gem 'pg'}
26
+ expect(gemfile).to include %{pg}
27
27
  end
28
28
 
29
29
  it "configures the correct ruby version" do
@@ -9,7 +9,7 @@ RSpec.describe "PowerTypes" do
9
9
 
10
10
  it "adds the PowerTypes gem to Gemfile" do
11
11
  gemfile_content = IO.read("#{project_path}/Gemfile")
12
- expect(gemfile_content).to include("gem 'power-types'")
12
+ expect(gemfile_content).to include("power-types")
13
13
  end
14
14
 
15
15
  it "adds the PowerTypes brief to README file" do
@@ -10,7 +10,7 @@ RSpec.describe "Pundit" do
10
10
  it "adds the Pundit gem to Gemfile" do
11
11
  content = IO.read("#{project_path}/Gemfile")
12
12
 
13
- expect(content).to include("gem 'pundit'")
13
+ expect(content).to include("pundit")
14
14
  end
15
15
 
16
16
  it "setup active admin" do
@@ -13,7 +13,7 @@ RSpec.describe "schedule" do
13
13
 
14
14
  it "adds the sidekiq-scheduler gem to Gemfile" do
15
15
  gemfile_content = IO.read("#{project_path}/Gemfile")
16
- expect(gemfile_content).to include("gem 'sidekiq-scheduler'")
16
+ expect(gemfile_content).to include("sidekiq-scheduler")
17
17
  end
18
18
 
19
19
  it "adds schedule section to sidekiq config" do
@@ -31,7 +31,6 @@ RSpec.describe "Testing" do
31
31
  create_dummy_project(devise: true)
32
32
  end
33
33
 
34
- it { expect(gemfile_content).to include("gem 'rspec-rails'") }
35
34
  it { expect(gemfile_content).to include('rspec-rails') }
36
35
  it { expect(gemfile_content).to include('factory_bot_rails') }
37
36
  it { expect(gemfile_content).to include('faker') }
@@ -22,7 +22,7 @@ RSpec.describe "VueAdmin" do
22
22
  end
23
23
 
24
24
  it "adds admin_component to vue components" do
25
- application_pack_path = "#{project_path}/app/javascript/components/admin-component.vue"
25
+ application_pack_path = "#{project_path}/app/frontend/components/admin-component.vue"
26
26
  expect(File).to be_file(application_pack_path)
27
27
  end
28
28
 
@@ -0,0 +1,81 @@
1
+ # rubocop:disable RSpec/MultipleMemoizedHelpers
2
+ require 'spec_helper'
3
+
4
+ RSpec.describe 'Front end' do
5
+ before :all do
6
+ drop_dummy_database
7
+ remove_project_directory
8
+ create_dummy_project('front_end_vite' => true)
9
+ end
10
+
11
+ def read_file(file_path)
12
+ IO.read("#{project_path}/#{file_path}")
13
+ end
14
+
15
+ let(:gemfile) { read_file('Gemfile') }
16
+ let(:application_file) { read_file('config/application.rb') }
17
+ let(:node_modules_file) { read_file('package.json') }
18
+ let(:application_js_file) { read_file('app/frontend/entrypoints/application.js') }
19
+ let(:layout_file) { read_file('app/views/layouts/application.html.erb') }
20
+ let(:csp_initializer) { read_file('config/initializers/content_security_policy.rb') }
21
+ let(:application_css_file) { read_file('app/frontend/css/application.css') }
22
+ let(:tailwind_config_file) { read_file('tailwind.config.js') }
23
+ let(:rails_css_file) { read_file('app/assets/stylesheets/application.css') }
24
+ let(:api_index_file) { read_file('app/frontend/api/index.ts') }
25
+ let(:case_converter_file) { read_file('app/frontend/utils/case-converter.ts') }
26
+ let(:csrf_token_file) { read_file('app/frontend/utils/csrf-token.ts') }
27
+ let(:mock_example_file) { read_file('app/frontend/api/__mocks__/index.mock.ts') }
28
+
29
+ it 'creates a project with vite' do
30
+ expect(gemfile).to include('vite_rails')
31
+ expect(layout_file.scan('vite_client_tag').length).to eq(1)
32
+ expect(layout_file.scan('vite_javascript_tag').length).to eq(2)
33
+ end
34
+
35
+ it 'creates a project with vue as frontend framework' do
36
+ expect(node_modules_file).to include('"vue"')
37
+ expect(application_js_file).to include('vue')
38
+ expect(application_js_file).to include("app.mount('#vue-app')")
39
+ expect(layout_file).to include('id="vue-app"')
40
+ end
41
+
42
+ it 'creates a vue project with client css' do
43
+ expect(application_js_file).to include("import '../css/application.css';")
44
+ end
45
+
46
+ it 'creates a vue project with tailwindcss' do
47
+ expect(node_modules_file).to include('"tailwindcss"')
48
+ expect(application_css_file).to include(
49
+ '@tailwind base;',
50
+ '@tailwind components;'
51
+ )
52
+ expect(tailwind_config_file).to include('module.exports')
53
+ expect(File.exists?(File.join(project_path, 'tailwind.config.js'))).to be(true)
54
+ expect(File.exists?(File.join(project_path, 'postcss.config.js'))).to be(true)
55
+ end
56
+
57
+ it 'updates suggested csp policy' do
58
+ expect(csp_initializer).to include('ViteRuby.config.host_with_port')
59
+ end
60
+
61
+ it 'includes correct packages for basic api client' do
62
+ expect(node_modules_file).to include('"axios"')
63
+ expect(node_modules_file).to include('"humps"')
64
+ end
65
+
66
+ it 'includes api client files' do
67
+ expect(api_index_file).to include('axios.create')
68
+ expect(case_converter_file).to include('humps')
69
+ expect(csrf_token_file).to include('meta[name=csrf-token]')
70
+ end
71
+
72
+ it 'includes mock example' do
73
+ expect(mock_example_file).to include('jest.fn()')
74
+ end
75
+
76
+ it 'includes the dotenv monkeypatch' do
77
+ expect(application_file).to include("require_relative '../lib/dotenv_monkeypatch'")
78
+ expect(File.exists?(File.join(project_path, 'lib/dotenv_monkeypatch.rb'))).to be(true)
79
+ end
80
+ end
81
+ # rubocop:enable RSpec/MultipleMemoizedHelpers
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.7.0
4
+ version: 7.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - juliogarciag
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-11-03 00:00:00.000000000 Z
11
+ date: 2023-03-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -212,14 +212,14 @@ dependencies:
212
212
  requirements:
213
213
  - - "~>"
214
214
  - !ruby/object:Gem::Version
215
- version: 6.1.4.4
215
+ version: 7.0.4.2
216
216
  type: :runtime
217
217
  prerelease: false
218
218
  version_requirements: !ruby/object:Gem::Requirement
219
219
  requirements:
220
220
  - - "~>"
221
221
  - !ruby/object:Gem::Version
222
- version: 6.1.4.4
222
+ version: 7.0.4.2
223
223
  - !ruby/object:Gem::Dependency
224
224
  name: semantic
225
225
  requirement: !ruby/object:Gem::Requirement
@@ -281,11 +281,18 @@ files:
281
281
  - lib/potassium/assets/active_admin/policies/comment_policy.rb
282
282
  - lib/potassium/assets/active_admin/policies/default_policy.rb
283
283
  - lib/potassium/assets/active_admin/policies/page_policy.rb
284
- - lib/potassium/assets/app/javascript/api/index.ts
285
- - lib/potassium/assets/app/javascript/components/app.spec.ts
286
- - lib/potassium/assets/app/javascript/components/app.vue
287
- - lib/potassium/assets/app/javascript/types/vue.d.ts
288
- - lib/potassium/assets/app/javascript/utils/case-converter.ts
284
+ - lib/potassium/assets/app/frontend/active_admin/jquery.js
285
+ - lib/potassium/assets/app/frontend/api/__mocks__/index.mock.ts
286
+ - lib/potassium/assets/app/frontend/api/index.ts
287
+ - lib/potassium/assets/app/frontend/components/app.spec.ts
288
+ - lib/potassium/assets/app/frontend/components/app.vue
289
+ - lib/potassium/assets/app/frontend/css/application.css
290
+ - lib/potassium/assets/app/frontend/entrypoints/active_admin.js
291
+ - lib/potassium/assets/app/frontend/entrypoints/active_admin.scss
292
+ - lib/potassium/assets/app/frontend/entrypoints/application.js
293
+ - lib/potassium/assets/app/frontend/types/vue.d.ts
294
+ - lib/potassium/assets/app/frontend/utils/case-converter.ts
295
+ - lib/potassium/assets/app/frontend/utils/csrf-token.ts
289
296
  - lib/potassium/assets/app/jobs/shrine_promote_job.rb
290
297
  - lib/potassium/assets/app/mailers/application_mailer.rb
291
298
  - lib/potassium/assets/app/mailers/example_mailer.rb
@@ -311,14 +318,9 @@ files:
311
318
  - lib/potassium/assets/config/sentry.rb.erb
312
319
  - lib/potassium/assets/config/shrine.rb
313
320
  - lib/potassium/assets/config/storage.yml
314
- - lib/potassium/assets/config/webpack/rules/css.js
315
- - lib/potassium/assets/config/webpack/rules/index.js
316
- - lib/potassium/assets/config/webpack/rules/jquery.js
317
- - lib/potassium/assets/config/webpack/rules/typescript.js
318
- - lib/potassium/assets/config/webpack/rules/vue.js
319
- - lib/potassium/assets/config/webpack/webpack.config.js
320
321
  - lib/potassium/assets/docker-compose.yml
321
322
  - lib/potassium/assets/es-CL.yml
323
+ - lib/potassium/assets/lib/dotenv_monkeypatch.rb
322
324
  - lib/potassium/assets/lib/tasks/auto_annotate_models.rake
323
325
  - lib/potassium/assets/package.json
324
326
  - lib/potassium/assets/public/mails/platanus-logo.png
@@ -329,6 +331,7 @@ files:
329
331
  - lib/potassium/assets/seeds/seeds.rb
330
332
  - lib/potassium/assets/sidekiq.rb.erb
331
333
  - lib/potassium/assets/sidekiq.yml
334
+ - lib/potassium/assets/tailwind.config.js
332
335
  - lib/potassium/assets/testing/.rspec
333
336
  - lib/potassium/assets/testing/devise_config.rb
334
337
  - lib/potassium/assets/testing/factory_bot_config.rb
@@ -339,7 +342,9 @@ files:
339
342
  - lib/potassium/assets/testing/shoulda_matchers_config.rb
340
343
  - lib/potassium/assets/testing/simplecov_config.rb
341
344
  - lib/potassium/assets/testing/system_tests_config.rb
345
+ - lib/potassium/assets/tsconfig.config.json
342
346
  - lib/potassium/assets/tsconfig.json
347
+ - lib/potassium/assets/vite.config.ts
343
348
  - lib/potassium/cli.rb
344
349
  - lib/potassium/cli/commands/create.rb
345
350
  - lib/potassium/cli/commands/install.rb
@@ -366,6 +371,7 @@ files:
366
371
  - lib/potassium/recipes/api.rb
367
372
  - lib/potassium/recipes/background_processor.rb
368
373
  - lib/potassium/recipes/better_errors.rb
374
+ - lib/potassium/recipes/bullet.rb
369
375
  - lib/potassium/recipes/ci.rb
370
376
  - lib/potassium/recipes/cleanup.rb
371
377
  - lib/potassium/recipes/coverage.rb
@@ -378,7 +384,7 @@ files:
378
384
  - lib/potassium/recipes/env.rb
379
385
  - lib/potassium/recipes/error_reporting.rb
380
386
  - lib/potassium/recipes/file_storage.rb
381
- - lib/potassium/recipes/front_end.rb
387
+ - lib/potassium/recipes/front_end_vite.rb
382
388
  - lib/potassium/recipes/github.rb
383
389
  - lib/potassium/recipes/google_tag_manager.rb
384
390
  - lib/potassium/recipes/heroku.rb
@@ -417,6 +423,7 @@ files:
417
423
  - spec/fakes/bin/hub
418
424
  - spec/features/api_spec.rb
419
425
  - spec/features/background_processor_spec.rb
426
+ - spec/features/bullet_spec.rb
420
427
  - spec/features/ci_spec.rb
421
428
  - spec/features/coverage_spec.rb
422
429
  - spec/features/data_migrate_spec.rb
@@ -425,7 +432,6 @@ files:
425
432
  - spec/features/draper_spec.rb
426
433
  - spec/features/error_reporting_spec.rb
427
434
  - spec/features/file_storage_spec.rb
428
- - spec/features/front_end_spec.rb
429
435
  - spec/features/github_spec.rb
430
436
  - spec/features/google_tag_manager_spec.rb
431
437
  - spec/features/heroku_spec.rb
@@ -439,6 +445,7 @@ files:
439
445
  - spec/features/schedule_spec.rb
440
446
  - spec/features/testing_spec.rb
441
447
  - spec/features/vue_admin_spec.rb
448
+ - spec/front_end_vite_spec.rb
442
449
  - spec/spec_helper.rb
443
450
  - spec/support/fake_github.rb
444
451
  - spec/support/fake_heroku.rb
@@ -474,6 +481,7 @@ test_files:
474
481
  - spec/fakes/bin/hub
475
482
  - spec/features/api_spec.rb
476
483
  - spec/features/background_processor_spec.rb
484
+ - spec/features/bullet_spec.rb
477
485
  - spec/features/ci_spec.rb
478
486
  - spec/features/coverage_spec.rb
479
487
  - spec/features/data_migrate_spec.rb
@@ -482,7 +490,6 @@ test_files:
482
490
  - spec/features/draper_spec.rb
483
491
  - spec/features/error_reporting_spec.rb
484
492
  - spec/features/file_storage_spec.rb
485
- - spec/features/front_end_spec.rb
486
493
  - spec/features/github_spec.rb
487
494
  - spec/features/google_tag_manager_spec.rb
488
495
  - spec/features/heroku_spec.rb
@@ -496,6 +503,7 @@ test_files:
496
503
  - spec/features/schedule_spec.rb
497
504
  - spec/features/testing_spec.rb
498
505
  - spec/features/vue_admin_spec.rb
506
+ - spec/front_end_vite_spec.rb
499
507
  - spec/spec_helper.rb
500
508
  - spec/support/fake_github.rb
501
509
  - spec/support/fake_heroku.rb
@@ -1,55 +0,0 @@
1
- import axios, { type AxiosRequestTransformer, type AxiosResponseTransformer } from 'axios';
2
- import convertKeys from '../utils/case-converter';
3
-
4
- const api = axios.create({
5
- transformRequest: [
6
- (data: any) => convertKeys(data, 'decamelize'),
7
- ...(axios.defaults.transformRequest as AxiosRequestTransformer[]),
8
- ],
9
- transformResponse: [
10
- ...(axios.defaults.transformResponse as AxiosResponseTransformer[]),
11
- (data: any) => convertKeys(data, 'camelize'),
12
- ],
13
- });
14
-
15
- export default api;
16
-
17
- /*
18
- // Example to use the api object in the path ´app/javascript/api/users.ts´
19
-
20
- import api from './index';
21
-
22
- export default {
23
- index() {
24
- const path = '/api/internal/users';
25
-
26
- return api({
27
- method: 'get',
28
- url: path,
29
- });
30
- },
31
- create(data: Partial<User>) {
32
- const path = '/api/internal/users';
33
-
34
- return api({
35
- method: 'post',
36
- url: path,
37
- data: {
38
- user: data,
39
- },
40
- });
41
- },
42
- update(data: Partial<User>) {
43
- const path = `/api/internal/users/${data.id}`;
44
-
45
- return api({
46
- method: 'put',
47
- url: path,
48
- data: {
49
- user: data,
50
- },
51
- });
52
- },
53
- };
54
-
55
- */
@@ -1,5 +0,0 @@
1
- module.exports = {
2
- resolve: {
3
- extensions: ['.css', '.scss']
4
- }
5
- }
@@ -1,11 +0,0 @@
1
- const vueConfig = require('./vue');
2
- const cssConfig = require('./css');
3
- const jQueryConfig = require('./jquery');
4
- const typescriptConfig = require('./typescript');
5
-
6
- module.exports = {
7
- vueConfig,
8
- cssConfig,
9
- jQueryConfig,
10
- typescriptConfig,
11
- };
@@ -1,11 +0,0 @@
1
- const webpack = require('webpack');
2
-
3
- module.exports = {
4
- plugins: [
5
- new webpack.ProvidePlugin({
6
- $: 'jquery',
7
- jQuery: 'jquery',
8
- "window.jQuery":"jquery"
9
- })
10
- ],
11
- }
@@ -1,32 +0,0 @@
1
- const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin');
2
-
3
- module.exports = {
4
- module: {
5
- rules: [
6
- {
7
- test: /\.ts$/,
8
- loader: 'ts-loader',
9
- exclude: /node_modules/,
10
- options: {
11
- appendTsSuffixTo: [/\.vue$/],
12
- transpileOnly: true,
13
- },
14
- },
15
- ],
16
- },
17
- resolve: {
18
- extensions: ['.ts'],
19
- },
20
- plugins: [
21
- new ForkTsCheckerWebpackPlugin({
22
- typescript: {
23
- extensions: {
24
- vue: {
25
- enabled: true,
26
- compiler: '@vue/compiler-sfc',
27
- },
28
- },
29
- },
30
- }),
31
- ],
32
- };
@@ -1,19 +0,0 @@
1
- const { VueLoaderPlugin } = require('vue-loader')
2
-
3
- module.exports = {
4
- module: {
5
- rules: [
6
- {
7
- test: /\.vue$/,
8
- loader: 'vue-loader'
9
- }
10
- ]
11
- },
12
- plugins: [new VueLoaderPlugin()],
13
- resolve: {
14
- extensions: ['.vue'],
15
- alias: {
16
- 'vue$': 'vue/dist/vue.esm-bundler.js',
17
- }
18
- },
19
- }
@@ -1,4 +0,0 @@
1
- const { webpackConfig, merge } = require('shakapacker');
2
- const { vueConfig, cssConfig, jQueryConfig, typescriptConfig } = require('./rules');
3
-
4
- module.exports = merge(typescriptConfig, cssConfig, jQueryConfig, webpackConfig);