potassium 5.2.1 → 5.2.2

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: 88890214b6b2c25983461ebce4351f5d988d02af8616c5b5a5dc9ff6628a9a80
4
- data.tar.gz: 2bd3d019f36148439c4b271cba2a3db65d3c1d9720eab2cf0509202c2c4553c3
3
+ metadata.gz: 28763549d04fed43f8cbe7206b9ca47dc79b1d631b1fd338a638ca59e18ec70c
4
+ data.tar.gz: f70e44992829f10fa2e5dff986fc6e56d293ab13b5210575b4da8be95784174b
5
5
  SHA512:
6
- metadata.gz: 8982526dca4d0faf9a5ab380c1105c59dc7dfbb71d1c8bb63118367ea172924c4fb2d3468226d2392fb414b426c1bcc458c6b90caf12145b8997d6b6bd8ee11e
7
- data.tar.gz: 9279a00b0ede0b3a1ca12e206229ff872475196cacc74231130fc1da4380357d00df8594b1c5036d8f0b59acce08483a69ffdccd28423f8a388013d71a3d511e
6
+ metadata.gz: 2714545c45a60fc3981ecb0237f5bbe3ac00f0da0c4384ff8a8f2ee01b37d449008804a196d08b1642c4f931c85f12b8e0b92476cf8bb269fa89c39b18c521ae
7
+ data.tar.gz: c113ea96c6e0be9a328d92f55a52f90e65d0ced49a621211e5f055a015804a972d8163d713d2c451e42be15ef86626951e300de6e4c3fa9c1fd3d4d10e4ff31b
@@ -0,0 +1,32 @@
1
+ version: 2
2
+ jobs:
3
+ build:
4
+ working_directory: ~/app
5
+ parallelism: 4
6
+ shell: /bin/bash --login
7
+
8
+ docker:
9
+ - image: circleci/build-image:ubuntu-14.04-XXL-upstart-1189-5614f37
10
+ command: /sbin/init
11
+
12
+ steps:
13
+ - checkout
14
+ - run: rm -f app/.rvmrc; echo 2.5.1 > app/.ruby-version; rvm use 2.5.1 --default
15
+ - run: 'sudo docker info >/dev/null 2>&1 || sudo service docker start; '
16
+ - run: echo 'export rvm_install_on_use_flag=0' >> /home/ubuntu/.rvmrc
17
+
18
+ - restore_cache:
19
+ keys:
20
+ - v1-dep-{{ .Branch }}-
21
+ - v1-dep-master-
22
+ - run: bundle install
23
+ - run: gem install hound-cli
24
+ - save_cache:
25
+ key: v1-dep-{{ .Branch }}-{{ epoch }}
26
+ paths:
27
+ - vendor/bundle
28
+ - run:
29
+ command: bundle exec rspec --color --require spec_helper --format=doc --format progress $(circleci tests glob spec/**/*_spec.rb | circleci tests split)
30
+ environment:
31
+ RAILS_ENV: test
32
+ RACK_ENV: test
data/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## Unreleased
4
+
5
+ ## 5.2.2
6
+
7
+ Features:
8
+ - Implement release phase on heroku
9
+ - Add sendgrid_dev support
10
+ -
11
+ Fix:
12
+ - Fix Circle CI
13
+ - Fix services containers env variables
14
+
3
15
  ## 5.2.1
4
16
 
5
17
  Features:
data/README.md CHANGED
@@ -98,13 +98,13 @@ When you choose to deploy to heroku a few extra things are added for the project
98
98
  parity between testing and production environments
99
99
  - Adds a `.buildpacks` file with the default buildpacks to use. It use the
100
100
  following buildpacks:
101
+ - Adds a `bin/release` file with the release phase script to run specific tasks before the app is deployed completely, for example `rails db:migrate`.
101
102
 
102
103
  | index | buildpack | description |
103
104
  |-------|-----------|-------------|
104
105
  | 1. | [nodejs][heroku-buildpack-nodejs] | to support javascript package management with `yarn` and `webpack` based asset compiling |
105
106
  | 2. | [ruby-version][heroku-buildpack-ruby-version] | to support the use of `.ruby-version` file to instruct heroku which ruby version to use |
106
107
  | 3. | [ruby][heroku-buildpack-ruby] | the base buildpack to run ruby applications |
107
- | 4. | [ruby-deploy-tasks][buildpack-deploy-tasks] | to run rake task after the deployment is complete, for example `db:migrate` |
108
108
 
109
109
  Also the heroku applications are created
110
110
 
@@ -113,7 +113,6 @@ Also the heroku applications are created
113
113
  and `production` stages.
114
114
  - Setup initial configuration variables
115
115
  - Set the application buildpack to the [multi-buildpack][heroku-buildpack-multi]
116
- - Set **deploy-tasks** buildpack is setup to run `rake db:migrate` after each deploy
117
116
 
118
117
  You'll need to manually
119
118
 
@@ -140,7 +139,6 @@ Go to https://monkeyci.platan.us, choose the repository from the list and hit
140
139
  [heroku-buildpack-nodejs]: https://github.com/heroku/heroku-buildpack-nodejs
141
140
  [heroku-buildpack-ruby]: http://github.com/heroku/heroku-buildpack-ruby
142
141
  [heroku-buildpack-multi]: http://github.com/heroku/heroku-buildpack-multi
143
- [buildpack-deploy-tasks]: http://github.com/gunpowderlabs/buildpack-ruby-rake-deploy-tasks
144
142
  [circle-ci]: https://circleci.com
145
143
 
146
144
  ## Development Tools
@@ -1,3 +1,2 @@
1
1
  https://github.com/platanus/heroku-buildpack-ruby-version.git
2
2
  https://github.com/heroku/heroku-buildpack-ruby.git
3
- https://github.com/gunpowderlabs/buildpack-ruby-rake-deploy-tasks.git
@@ -8,5 +8,5 @@ end
8
8
  if defined?(Rails)
9
9
  require 'rails/console/app'
10
10
  require 'rails/console/helpers'
11
- include Rails::ConsoleMethods
11
+ include Rails::ConsoleMethods # rubocop:disable Style/MixinUsage
12
12
  end
@@ -1 +1,2 @@
1
1
  web: bundle exec puma -C ./config/puma.rb
2
+ release: bin/release
@@ -22,7 +22,7 @@ wait_services(){
22
22
  # Chain tests together by using &&
23
23
  until (
24
24
  <% if(selected?(:database, :mysql) || selected?(:database, :postgresql))-%>
25
- test_service '$<%=get(:database).to_s.upcase%>_HOST' '$<%=get(:database).to_s.upcase%>_PORT' && \
25
+ test_service '$DB_HOST' '$DB_PORT' && \
26
26
  <% end-%>
27
27
  echo "Services ready"
28
28
  )
@@ -0,0 +1,9 @@
1
+ #!/bin/bash
2
+
3
+ set -e
4
+
5
+ echo 'Release Phase...'
6
+
7
+ bundle exec rails db:migrate
8
+
9
+ echo 'Release Phase: OK'
@@ -3,40 +3,40 @@ if Rails.env.development?
3
3
  # You can override any of these by setting an environment variable of the
4
4
  # same name.
5
5
  Annotate.set_defaults(
6
- 'routes' => 'false',
7
- 'position_in_routes' => 'after',
8
- 'position_in_class' => 'after',
9
- 'position_in_test' => 'after',
10
- 'position_in_fixture' => 'after',
11
- 'position_in_factory' => 'after',
12
- 'position_in_serializer' => 'after',
13
- 'show_foreign_keys' => 'true',
14
- 'show_indexes' => 'true',
15
- 'simple_indexes' => 'false',
16
- 'model_dir' => 'app/models',
17
- 'root_dir' => '',
18
- 'include_version' => 'false',
19
- 'require' => '',
20
- 'exclude_tests' => 'true',
21
- 'exclude_fixtures' => 'true',
22
- 'exclude_factories' => 'true',
23
- 'exclude_serializers' => 'true',
24
- 'exclude_scaffolds' => 'true',
25
- 'exclude_controllers' => 'true',
26
- 'exclude_helpers' => 'false',
27
- 'ignore_model_sub_dir' => 'false',
28
- 'ignore_columns' => nil,
29
- 'ignore_unknown_models' => 'false',
6
+ 'routes' => 'false',
7
+ 'position_in_routes' => 'after',
8
+ 'position_in_class' => 'after',
9
+ 'position_in_test' => 'after',
10
+ 'position_in_fixture' => 'after',
11
+ 'position_in_factory' => 'after',
12
+ 'position_in_serializer' => 'after',
13
+ 'show_foreign_keys' => 'true',
14
+ 'show_indexes' => 'true',
15
+ 'simple_indexes' => 'false',
16
+ 'model_dir' => 'app/models',
17
+ 'root_dir' => '',
18
+ 'include_version' => 'false',
19
+ 'require' => '',
20
+ 'exclude_tests' => 'true',
21
+ 'exclude_fixtures' => 'true',
22
+ 'exclude_factories' => 'true',
23
+ 'exclude_serializers' => 'true',
24
+ 'exclude_scaffolds' => 'true',
25
+ 'exclude_controllers' => 'true',
26
+ 'exclude_helpers' => 'false',
27
+ 'ignore_model_sub_dir' => 'false',
28
+ 'ignore_columns' => nil,
29
+ 'ignore_unknown_models' => 'false',
30
30
  'hide_limit_column_types' => 'integer,boolean',
31
- 'skip_on_db_migrate' => 'false',
32
- 'format_bare' => 'true',
33
- 'format_rdoc' => 'false',
34
- 'format_markdown' => 'false',
35
- 'sort' => 'false',
36
- 'force' => 'false',
37
- 'trace' => 'false',
38
- 'wrapper_open' => nil,
39
- 'wrapper_close' => nil
31
+ 'skip_on_db_migrate' => 'false',
32
+ 'format_bare' => 'true',
33
+ 'format_rdoc' => 'false',
34
+ 'format_markdown' => 'false',
35
+ 'sort' => 'false',
36
+ 'force' => 'false',
37
+ 'trace' => 'false',
38
+ 'wrapper_open' => nil,
39
+ 'wrapper_close' => nil
40
40
  )
41
41
  end
42
42
 
@@ -1,6 +1,6 @@
1
1
  # This file is copied to spec/ when you run 'rails generate rspec:install'
2
2
  ENV['RACK_ENV'] ||= 'test'
3
- require File.expand_path('../../config/environment', __FILE__)
3
+ require File.expand_path('../config/environment', __dir__)
4
4
  require 'rspec/rails'
5
5
  require 'spec_helper'
6
6
  require 'shoulda/matchers'
@@ -20,7 +20,7 @@ require 'faker'
20
20
  # directory. Alternatively, in the individual `*_spec.rb` files, manually
21
21
  # require only the support files necessary.
22
22
  #
23
- Dir[Rails.root.join('spec/support/**/*.rb')].each { |f| require f }
23
+ Dir[Rails.root.join('spec', 'support', '**', '*.rb')].each { |f| require f }
24
24
 
25
25
  # Checks for pending migrations before tests are run.
26
26
  # If you are not using ActiveRecord, you can remove this line.
@@ -36,9 +36,9 @@ class Recipes::Ci < Rails::AppBuilder
36
36
  YAML
37
37
  compose.add_service("postgresql", srv)
38
38
  compose.add_link('test', 'postgresql')
39
- compose.add_env('test', 'POSTGRESQL_USER', 'postgres')
40
- compose.add_env('test', 'POSTGRESQL_HOST', 'postgresql')
41
- compose.add_env('test', 'POSTGRESQL_PORT', '5432')
39
+ compose.add_env('test', 'DB_USER', 'postgres')
40
+ compose.add_env('test', 'DB_HOST', 'postgresql')
41
+ compose.add_env('test', 'DB_PORT', '5432')
42
42
  end
43
43
 
44
44
  add_readme_header :ci
@@ -41,6 +41,8 @@ class Recipes::Heroku < Rails::AppBuilder
41
41
 
42
42
  copy_file '../assets/Procfile', 'Procfile'
43
43
  copy_file '../assets/.buildpacks', '.buildpacks'
44
+ copy_file '../assets/bin/release', 'bin/release'
45
+ run 'chmod a+x bin/release'
44
46
 
45
47
  template "../assets/bin/setup_heroku.erb", "bin/setup_heroku", force: true
46
48
  run "chmod a+x bin/setup_heroku"
@@ -88,7 +90,6 @@ class Recipes::Heroku < Rails::AppBuilder
88
90
  run_toolbelt_command "labs:enable runtime-dyno-metadata", staged_app_name
89
91
  run_toolbelt_command "config:add HEROKU_APP_NAME=#{staged_app_name}", staged_app_name
90
92
  run_toolbelt_command "config:add #{rack_env}", staged_app_name
91
- run_toolbelt_command "config:add DEPLOY_TASKS=db:migrate", staged_app_name
92
93
 
93
94
  set_rails_secrets(environment)
94
95
  set_app_multi_buildpack(environment)
@@ -68,7 +68,7 @@ class Recipes::Mailer < Rails::AppBuilder
68
68
 
69
69
  mailer_config =
70
70
  <<~RUBY
71
- require Rails.root.join("config/mailer")
71
+ require Rails.root.join("config", "mailer")
72
72
  RUBY
73
73
 
74
74
  prepend_file "config/environments/production.rb", mailer_config
@@ -81,11 +81,18 @@ class Recipes::Mailer < Rails::AppBuilder
81
81
  append_to_file '.env.development', "SENDGRID_API_KEY=\n"
82
82
  sendgrid_settings = <<~RUBY
83
83
  Rails.application.config.action_mailer.sendgrid_settings = {
84
- api_key: ENV['SENDGRID_API']
84
+ api_key: ENV['SENDGRID_API_KEY']
85
85
  }
86
86
  RUBY
87
87
  inject_into_file 'config/mailer.rb', sendgrid_settings,
88
88
  after: "Rails.application.config.action_mailer.delivery_method = :sendgrid\n"
89
+ sendgrid_dev_settings = <<~RUBY
90
+ Rails.application.config.action_mailer.sendgrid_dev_settings = {
91
+ api_key: ENV['SENDGRID_API_KEY']
92
+ }
93
+ RUBY
94
+ application sendgrid_dev_settings, env: "development"
95
+ application "config.action_mailer.delivery_method = :sendgrid_dev", env: "development"
89
96
  end
90
97
 
91
98
  def aws_ses
@@ -1,5 +1,5 @@
1
1
  module Potassium
2
- VERSION = "5.2.1"
2
+ VERSION = "5.2.2"
3
3
  RUBY_VERSION = "2.5.5"
4
4
  RAILS_VERSION = "~> 5.2.1"
5
5
  RUBOCOP_VERSION = "~> 0.65.0"
@@ -1,4 +1,5 @@
1
1
  require "spec_helper"
2
+ require "yaml"
2
3
 
3
4
  RSpec.describe "DatabaseContainer" do
4
5
  before(:all) do
@@ -18,6 +18,7 @@ RSpec.describe "Heroku" do
18
18
  procfile = IO.read(procfile_path)
19
19
 
20
20
  expect(procfile).to include("web: bundle exec puma -C ./config/puma.rb")
21
+ expect(procfile).to include("release: bin/release")
21
22
 
22
23
  buildpacks_path = "#{project_path}/.buildpacks"
23
24
  buildpacks = IO.read(buildpacks_path)
@@ -25,20 +26,15 @@ RSpec.describe "Heroku" do
25
26
  expect(buildpacks).to include("https://github.com/heroku/heroku-buildpack-nodejs")
26
27
  expect(buildpacks).to include("https://github.com/platanus/heroku-buildpack-ruby-version.git")
27
28
  expect(buildpacks).to include("https://github.com/heroku/heroku-buildpack-ruby.git")
28
- expect(buildpacks).to(
29
- include("https://github.com/gunpowderlabs/buildpack-ruby-rake-deploy-tasks.git")
30
- )
31
29
 
32
30
  expect(FakeHeroku).to have_created_app_for("staging")
33
31
  expect(FakeHeroku).to have_created_app_for("production")
34
32
 
35
33
  expect(FakeHeroku).to have_configured_vars("staging", "SECRET_KEY_BASE")
36
34
  expect(FakeHeroku).to have_configured_vars("staging", "RACK_ENV")
37
- expect(FakeHeroku).to have_configured_vars("staging", "DEPLOY_TASKS")
38
35
 
39
36
  expect(FakeHeroku).to have_configured_vars("production", "SECRET_KEY_BASE")
40
37
  expect(FakeHeroku).to have_configured_vars("production", "RACK_ENV")
41
- expect(FakeHeroku).to have_configured_vars("production", "DEPLOY_TASKS")
42
38
 
43
39
  expect(FakeHeroku).to have_created_pipeline_for("staging")
44
40
  expect(FakeHeroku).to have_add_pipeline_for("production")
@@ -55,5 +51,12 @@ RSpec.describe "Heroku" do
55
51
  expect(bin_setup_heroku).to include("heroku apps:info --app pl-#{app_name}-production")
56
52
  expect(bin_setup_heroku).to include("git config heroku.remote staging")
57
53
  expect(File.stat(bin_setup_path)).to be_executable
54
+
55
+ bin_release_path = "#{project_path}/bin/release"
56
+ bin_release = IO.read(bin_release_path)
57
+
58
+ expect(bin_release).to include('set -e')
59
+ expect(bin_release).to include('bundle exec rails db:migrate')
60
+ expect(File.stat(bin_release_path)).to be_executable
58
61
  end
59
62
  end
@@ -0,0 +1,42 @@
1
+ require "spec_helper"
2
+
3
+ RSpec.describe "Mailer" do
4
+ let(:gemfile) { IO.read("#{project_path}/Gemfile") }
5
+ let(:mailer_config) { IO.read("#{project_path}/config/mailer.rb") }
6
+ let(:dev_config) { IO.read("#{project_path}/config/environments/development.rb") }
7
+
8
+ before(:all) { drop_dummy_database }
9
+
10
+ context "when selecting sendgrid as mailer" do
11
+ before(:all) do
12
+ remove_project_directory
13
+ create_dummy_project("email_service" => "sendgrid")
14
+ end
15
+
16
+ it { expect(gemfile).to include("send_grid_mailer") }
17
+
18
+ it "adds configuration to mailer.rb" do
19
+ expect(mailer_config).to include("delivery_method = :sendgrid")
20
+ expect(mailer_config).to include("sendgrid_settings = {")
21
+ expect(mailer_config).to include("api_key: ENV['SENDGRID_API_KEY']")
22
+ end
23
+
24
+ it "adds configuration to development.rb" do
25
+ expect(dev_config).to include("delivery_method = :sendgrid_dev")
26
+ expect(dev_config).to include("sendgrid_dev_settings = {")
27
+ expect(dev_config).to include("api_key: ENV['SENDGRID_API_KEY']")
28
+ end
29
+ end
30
+
31
+ context "when selecting aws_ses as mailer" do
32
+ before(:all) do
33
+ remove_project_directory
34
+ create_dummy_project("email_service" => "aws_ses")
35
+ end
36
+
37
+ it { expect(gemfile).to include("aws-sdk-rails") }
38
+ it { expect(gemfile).to include("letter_opener") }
39
+ it { expect(mailer_config).to include("delivery_method = :aws_sdk") }
40
+ it { expect(dev_config).to include("delivery_method = :letter_opener") }
41
+ end
42
+ end
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: 5.2.1
4
+ version: 5.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - juliogarciag
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-05-31 00:00:00.000000000 Z
11
+ date: 2019-07-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -173,6 +173,7 @@ executables:
173
173
  extensions: []
174
174
  extra_rdoc_files: []
175
175
  files:
176
+ - ".circleci/config.yml"
176
177
  - ".editorconfig"
177
178
  - ".gitignore"
178
179
  - ".rspec"
@@ -184,7 +185,6 @@ files:
184
185
  - Rakefile
185
186
  - bin/potassium
186
187
  - bin/potassium_test
187
- - circle.yml
188
188
  - docs/CONTRIBUTING.md
189
189
  - docs/DSL.md
190
190
  - lib/potassium.rb
@@ -211,6 +211,7 @@ files:
211
211
  - lib/potassium/assets/app/mailers/application_mailer.rb
212
212
  - lib/potassium/assets/aws.rb
213
213
  - lib/potassium/assets/bin/cibuild.erb
214
+ - lib/potassium/assets/bin/release
214
215
  - lib/potassium/assets/bin/setup.erb
215
216
  - lib/potassium/assets/bin/setup_heroku.erb
216
217
  - lib/potassium/assets/bin/update.erb
@@ -317,6 +318,7 @@ files:
317
318
  - spec/features/github_spec.rb
318
319
  - spec/features/heroku_spec.rb
319
320
  - spec/features/i18n_spec.rb
321
+ - spec/features/mailer_spec.rb
320
322
  - spec/features/new_project_spec.rb
321
323
  - spec/features/power_types_spec.rb
322
324
  - spec/features/schedule_spec.rb
@@ -343,8 +345,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
343
345
  - !ruby/object:Gem::Version
344
346
  version: '0'
345
347
  requirements: []
346
- rubyforge_project:
347
- rubygems_version: 2.7.6.2
348
+ rubygems_version: 3.0.4
348
349
  signing_key:
349
350
  specification_version: 4
350
351
  summary: An application generator from Platanus
@@ -362,6 +363,7 @@ test_files:
362
363
  - spec/features/github_spec.rb
363
364
  - spec/features/heroku_spec.rb
364
365
  - spec/features/i18n_spec.rb
366
+ - spec/features/mailer_spec.rb
365
367
  - spec/features/new_project_spec.rb
366
368
  - spec/features/power_types_spec.rb
367
369
  - spec/features/schedule_spec.rb
data/circle.yml DELETED
@@ -1,12 +0,0 @@
1
- machine:
2
- ruby:
3
- version: 2.5.1
4
- services:
5
- - docker
6
- post:
7
- - "echo 'export rvm_install_on_use_flag=0' >> /home/ubuntu/.rvmrc"
8
-
9
- dependencies:
10
- override:
11
- - bundle install
12
- - gem install hound-cli