potassium 5.2.2 → 6.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (121) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +103 -28
  3. data/.circleci/setup-rubygems.sh +3 -0
  4. data/.gitignore +2 -1
  5. data/.node-version +1 -0
  6. data/.rubocop.yml +530 -0
  7. data/.ruby-version +1 -1
  8. data/CHANGELOG.md +92 -1
  9. data/README.md +51 -45
  10. data/docs/DSL.md +5 -5
  11. data/lib/potassium/assets/.circleci/config.yml.erb +151 -0
  12. data/lib/potassium/assets/.eslintrc.json +352 -0
  13. data/lib/potassium/assets/.github/pull_request_template.md +9 -0
  14. data/lib/potassium/assets/.rubocop.yml +528 -0
  15. data/lib/potassium/assets/.stylelintrc.json +46 -0
  16. data/lib/potassium/assets/Makefile.erb +21 -32
  17. data/lib/potassium/assets/README.yml +59 -15
  18. data/lib/potassium/assets/active_admin/admin-component.vue +35 -0
  19. data/lib/potassium/assets/active_admin/admin_application.js +14 -0
  20. data/lib/potassium/assets/active_admin/init_activeadmin_vue.rb +10 -0
  21. data/lib/potassium/assets/app/graphql/graphql_controller.rb +55 -0
  22. data/lib/potassium/assets/app/graphql/mutations/login_mutation.rb +23 -0
  23. data/lib/potassium/assets/app/graphql/queries/base_query.rb +4 -0
  24. data/lib/potassium/assets/app/graphql/types/base/base_argument.rb +4 -0
  25. data/lib/potassium/assets/app/graphql/types/base/base_enum.rb +4 -0
  26. data/lib/potassium/assets/app/graphql/types/base/base_field.rb +5 -0
  27. data/lib/potassium/assets/app/graphql/types/base/base_input_object.rb +5 -0
  28. data/lib/potassium/assets/app/graphql/types/base/base_interface.rb +7 -0
  29. data/lib/potassium/assets/app/graphql/types/base/base_object.rb +5 -0
  30. data/lib/potassium/assets/app/graphql/types/base/base_scalar.rb +4 -0
  31. data/lib/potassium/assets/app/graphql/types/base/base_union.rb +4 -0
  32. data/lib/potassium/assets/app/graphql/types/mutation_type.rb +10 -0
  33. data/lib/potassium/assets/app/graphql/types/query_type.rb +13 -0
  34. data/lib/potassium/assets/app/javascript/app.spec.js +14 -0
  35. data/lib/potassium/assets/app/uploaders/base_uploader.rb +11 -0
  36. data/lib/potassium/assets/app/uploaders/image_uploader.rb +5 -0
  37. data/lib/potassium/assets/app/views/shared/_gtm_body.html.erb +4 -0
  38. data/lib/potassium/assets/app/views/shared/_gtm_head.html.erb +7 -0
  39. data/lib/potassium/assets/bin/release +1 -1
  40. data/lib/potassium/assets/bin/setup.erb +1 -1
  41. data/lib/potassium/assets/config/database_mysql.yml.erb +2 -2
  42. data/lib/potassium/assets/config/database_postgresql.yml.erb +2 -2
  43. data/lib/potassium/assets/config/graphql_playground.rb +20 -0
  44. data/lib/potassium/assets/config/puma.rb +1 -1
  45. data/lib/potassium/assets/config/shrine.rb +36 -0
  46. data/lib/potassium/assets/lib/tasks/auto_annotate_models.rake +2 -1
  47. data/lib/potassium/assets/package.json +4 -1
  48. data/lib/potassium/assets/redis.yml +1 -2
  49. data/lib/potassium/assets/testing/rails_helper.rb +2 -0
  50. data/lib/potassium/cli/commands/create.rb +12 -19
  51. data/lib/potassium/cli_options.rb +77 -26
  52. data/lib/potassium/helpers/gem-helpers.rb +1 -1
  53. data/lib/potassium/helpers/template-helpers.rb +8 -0
  54. data/lib/potassium/newest_version_ensurer.rb +19 -36
  55. data/lib/potassium/node_version_ensurer.rb +30 -0
  56. data/lib/potassium/recipes/admin.rb +3 -3
  57. data/lib/potassium/recipes/annotate.rb +1 -1
  58. data/lib/potassium/recipes/api.rb +93 -21
  59. data/lib/potassium/recipes/background_processor.rb +66 -19
  60. data/lib/potassium/recipes/ci.rb +10 -38
  61. data/lib/potassium/recipes/data_migrate.rb +44 -0
  62. data/lib/potassium/recipes/database.rb +4 -0
  63. data/lib/potassium/recipes/database_container.rb +7 -5
  64. data/lib/potassium/recipes/draper.rb +1 -10
  65. data/lib/potassium/recipes/file_storage.rb +66 -0
  66. data/lib/potassium/recipes/front_end.rb +225 -9
  67. data/lib/potassium/recipes/github.rb +93 -15
  68. data/lib/potassium/recipes/google_tag_manager.rb +90 -0
  69. data/lib/potassium/recipes/heroku.rb +42 -29
  70. data/lib/potassium/recipes/mailer.rb +18 -2
  71. data/lib/potassium/recipes/monitoring.rb +5 -0
  72. data/lib/potassium/recipes/node.rb +21 -0
  73. data/lib/potassium/recipes/rack_cors.rb +18 -15
  74. data/lib/potassium/recipes/schedule.rb +17 -2
  75. data/lib/potassium/recipes/style.rb +21 -3
  76. data/lib/potassium/recipes/vue_admin.rb +124 -0
  77. data/lib/potassium/templates/application.rb +10 -7
  78. data/lib/potassium/version.rb +7 -4
  79. data/potassium.gemspec +11 -6
  80. data/spec/features/api_spec.rb +25 -0
  81. data/spec/features/background_processor_spec.rb +19 -6
  82. data/spec/features/ci_spec.rb +7 -4
  83. data/spec/features/data_migrate_spec.rb +14 -0
  84. data/spec/features/database_container_spec.rb +1 -5
  85. data/spec/features/draper_spec.rb +1 -6
  86. data/spec/features/file_storage_spec.rb +75 -0
  87. data/spec/features/front_end_spec.rb +102 -0
  88. data/spec/features/github_spec.rb +53 -8
  89. data/spec/features/google_tag_manager_spec.rb +59 -0
  90. data/spec/features/graphql_spec.rb +71 -0
  91. data/spec/features/heroku_spec.rb +1 -1
  92. data/spec/features/mailer_spec.rb +16 -0
  93. data/spec/features/new_project_spec.rb +6 -14
  94. data/spec/features/node_spec.rb +28 -0
  95. data/spec/features/power_types_spec.rb +5 -16
  96. data/spec/features/schedule_spec.rb +11 -4
  97. data/spec/features/vue_admin_spec.rb +47 -0
  98. data/spec/spec_helper.rb +5 -0
  99. data/spec/support/fake_octokit.rb +31 -0
  100. data/spec/support/potassium_test_helpers.rb +26 -9
  101. data/tmp/.keep +0 -0
  102. metadata +152 -46
  103. data/lib/potassium/assets/.circleci/config.yml +0 -20
  104. data/lib/potassium/assets/Dockerfile.ci +0 -6
  105. data/lib/potassium/assets/active_admin/active_admin.js.coffee +0 -4
  106. data/lib/potassium/assets/active_admin/init_activeadmin_angular.rb +0 -8
  107. data/lib/potassium/assets/api/api_error_concern.rb +0 -32
  108. data/lib/potassium/assets/api/base_controller.rb +0 -9
  109. data/lib/potassium/assets/api/draper_responder.rb +0 -62
  110. data/lib/potassium/assets/api/responder.rb +0 -41
  111. data/lib/potassium/assets/aws.rb +0 -1
  112. data/lib/potassium/assets/bin/cibuild.erb +0 -100
  113. data/lib/potassium/assets/docker-compose.ci.yml +0 -11
  114. data/lib/potassium/assets/sidekiq_scheduler.yml +0 -9
  115. data/lib/potassium/assets/testing/paperclip.rb +0 -59
  116. data/lib/potassium/recipes/active_storage.rb +0 -40
  117. data/lib/potassium/recipes/angular_admin.rb +0 -56
  118. data/lib/potassium/recipes/aws_sdk.rb +0 -7
  119. data/lib/potassium/recipes/paperclip.rb +0 -47
  120. data/spec/features/active_storage_spec.rb +0 -30
  121. data/spec/features/front_end.rb +0 -30
@@ -1,7 +0,0 @@
1
- class Recipes::AwsSdk < Rails::AppBuilder
2
- def create
3
- gather_gem('aws-sdk', '~> 3')
4
-
5
- template("../assets/aws.rb", "config/initializers/aws.rb", force: true)
6
- end
7
- end
@@ -1,47 +0,0 @@
1
- class Recipes::Paperclip < Rails::AppBuilder
2
- def ask
3
- paperclip = answer(:paperclip) { Ask.confirm("Do you want to use Paperclip for uploads?") }
4
- set(:paperclip, paperclip)
5
- end
6
-
7
- def create
8
- return unless selected?(:paperclip)
9
- add_paperclip
10
- config_rspec
11
- end
12
-
13
- def install
14
- add_paperclip
15
- config_rspec if gem_exists?(/rspec-rails/)
16
- end
17
-
18
- def installed?
19
- gem_exists?(/paperclip/)
20
- end
21
-
22
- private
23
-
24
- def add_paperclip
25
- gather_gem 'paperclip', '~> 5.0'
26
- paperclip_config =
27
- <<~RUBY
28
- config.paperclip_defaults = {
29
- storage: :s3,
30
- s3_protocol: 'https',
31
- s3_region: ENV.fetch('AWS_REGION', 'us-east-1'),
32
- s3_credentials: {
33
- bucket: ENV['S3_BUCKET']
34
- }
35
- }
36
- RUBY
37
- application paperclip_config, env: 'production'
38
- append_to_file '.env.development', "S3_BUCKET=\n"
39
- append_to_file '.gitignore', "/public/system/*\n"
40
- add_readme_section :internal_dependencies, :paperclip
41
- end
42
-
43
- def config_rspec
44
- copy_file '../assets/testing/platanus.png', 'spec/assets/platanus.png'
45
- copy_file '../assets/testing/paperclip.rb', 'spec/support/paperclip.rb'
46
- end
47
- end
@@ -1,30 +0,0 @@
1
- require "spec_helper"
2
-
3
- RSpec.describe "Active Storage" do
4
- before :all do
5
- drop_dummy_database
6
- remove_project_directory
7
- create_dummy_project("active_storage" => true)
8
- end
9
-
10
- it "customizes config file" do
11
- content = IO.read("#{project_path}/config/storage.yml")
12
- expect(content).to include("bucket: <%= ENV['S3_BUCKET'] %>")
13
- end
14
-
15
- it "adds brief to README file" do
16
- content = IO.read("#{project_path}/README.md")
17
- expect(content).to include("Active Storage")
18
- end
19
-
20
- it "uses amazon on production env" do
21
- content = IO.read("#{project_path}/config/environments/production.rb")
22
- expect(content).to include("config.active_storage.service = :amazon")
23
- end
24
-
25
- it "adds amazon ENV vars" do
26
- content = IO.read("#{project_path}/.env.development")
27
- expect(content).to include("AWS_REGION=")
28
- expect(content).to include("S3_BUCKET=")
29
- end
30
- end
@@ -1,30 +0,0 @@
1
- require "spec_helper"
2
-
3
- RSpec.describe "Front end" do
4
- before(:all) { drop_dummy_database }
5
- before(:each) { remove_project_directory }
6
-
7
- it "creates a project wihtout a front end framework" do
8
- create_dummy_project("front_end" => "None")
9
- gemfile = IO.read("#{project_path}/Gemfile")
10
- expect(gemfile).not_to include('webpacker')
11
- end
12
-
13
- it "creates a project wihtout vue as front end framework" do
14
- create_dummy_project("front_end" => "angular")
15
- gemfile = IO.read("#{project_path}/Gemfile")
16
- node_modules_file = IO.read("#{project_path}/package.json")
17
-
18
- expect(gemfile).to include('webpacker')
19
- expect(node_modules_file).to include("\"@angular/core\"")
20
- end
21
-
22
- it "creates a project wihtout vue as front end framework" do
23
- create_dummy_project("front_end" => "vue")
24
- gemfile = IO.read("#{project_path}/Gemfile")
25
- node_modules_file = IO.read("#{project_path}/package.json")
26
-
27
- expect(gemfile).to include('webpacker')
28
- expect(node_modules_file).to include("\"vue\"")
29
- end
30
- end