potassium 5.2.2 → 5.2.3
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 +4 -4
- data/.circleci/config.yml +2 -5
- data/CHANGELOG.md +23 -1
- data/README.md +1 -1
- data/lib/potassium/assets/Makefile.erb +15 -0
- data/lib/potassium/assets/README.yml +1 -1
- data/lib/potassium/assets/bin/cibuild.erb +5 -5
- data/lib/potassium/assets/bin/release +1 -1
- data/lib/potassium/assets/docker-compose.ci.yml +1 -1
- data/lib/potassium/assets/sidekiq_scheduler.yml +1 -1
- data/lib/potassium/cli_options.rb +4 -13
- data/lib/potassium/helpers/gem-helpers.rb +1 -1
- data/lib/potassium/recipes/api.rb +9 -1
- data/lib/potassium/recipes/background_processor.rb +4 -1
- data/lib/potassium/recipes/ci.rb +2 -0
- data/lib/potassium/recipes/data_migrate.rb +44 -0
- data/lib/potassium/recipes/database_container.rb +2 -1
- data/lib/potassium/recipes/file_storage.rb +83 -0
- data/lib/potassium/recipes/front_end.rb +35 -10
- data/lib/potassium/templates/application.rb +3 -5
- data/lib/potassium/version.rb +1 -1
- data/potassium.gemspec +1 -0
- data/spec/features/data_migrate_spec.rb +14 -0
- data/spec/features/database_container_spec.rb +0 -4
- data/spec/features/file_storage_spec.rb +74 -0
- data/spec/features/front_end.rb +9 -6
- data/spec/features/heroku_spec.rb +1 -1
- data/spec/features/new_project_spec.rb +5 -13
- data/spec/spec_helper.rb +4 -0
- data/spec/support/potassium_test_helpers.rb +4 -0
- metadata +23 -9
- data/lib/potassium/assets/aws.rb +0 -1
- data/lib/potassium/recipes/active_storage.rb +0 -40
- data/lib/potassium/recipes/aws_sdk.rb +0 -7
- data/lib/potassium/recipes/paperclip.rb +0 -47
- data/spec/features/active_storage_spec.rb +0 -30
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b9fb3b1b4a6ac80cce023a76b98629143523145baa3adcdf7a8afa46a56c97a1
|
|
4
|
+
data.tar.gz: 0e99964ae4b0d55e7d8ba7bd610240e22d40203450cb8651009418970bcf16d3
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e759b1f5f9b8ff6a6eebcfa1e60366fb7a4cc188fb1561a2367439155014312f5dcfe168c8a8a1a3e1a2c43de2f6e837cea04cb0746b4452aae5090f5635755b
|
|
7
|
+
data.tar.gz: 7a1ea34a7dde786ab915f79c9b1e59a62bf0f593dd1d331cd0a25284669b66e74d4628b62e4846ce6aeb1bae933ea965ae88fece52b424effad7c82dbeb87ad7
|
data/.circleci/config.yml
CHANGED
|
@@ -6,14 +6,11 @@ jobs:
|
|
|
6
6
|
shell: /bin/bash --login
|
|
7
7
|
|
|
8
8
|
docker:
|
|
9
|
-
- image: circleci/
|
|
10
|
-
command: /sbin/init
|
|
9
|
+
- image: circleci/ruby:2.5.5-node
|
|
11
10
|
|
|
12
11
|
steps:
|
|
13
12
|
- checkout
|
|
14
|
-
-
|
|
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
|
|
13
|
+
- setup_remote_docker
|
|
17
14
|
|
|
18
15
|
- restore_cache:
|
|
19
16
|
keys:
|
data/CHANGELOG.md
CHANGED
|
@@ -2,12 +2,34 @@
|
|
|
2
2
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
|
+
## 5.2.3
|
|
6
|
+
|
|
7
|
+
Features:
|
|
8
|
+
- Add restore-from commands for pg_restore in makefile [#237](https://github.com/platanus/potassium/pull/237)
|
|
9
|
+
- Allow usage of vue components in rails views out of the box [#231](https://github.com/platanus/potassium/pull/231)
|
|
10
|
+
- Add data migrate [#227](https://github.com/platanus/potassium/pull/227)
|
|
11
|
+
- Add raven capture in error handler if sentry enabled [#226](https://github.com/platanus/potassium/pull/226)
|
|
12
|
+
- Remove unnecesary aws-sdk gems in favor of specific ones [#221](https://github.com/platanus/potassium/pull/221)
|
|
13
|
+
- Unify storage options and deprecate paperclip [#211](https://github.com/platanus/potassium/pull/211)
|
|
14
|
+
|
|
15
|
+
Fix:
|
|
16
|
+
- Fix gather_gem issue when multiple versions passed as argument [#242](https://github.com/platanus/potassium/pull/242)
|
|
17
|
+
- Support "None" passed as CLI flag option in file storage [#240](https://github.com/platanus/potassium/pull/240)
|
|
18
|
+
- Add sidekiq worker to Procfile if installed after project setup (with heroku) [#234](https://github.com/platanus/potassium/pull/234)
|
|
19
|
+
- Include test_data volume to CI compose for bundler related data [#229](https://github.com/platanus/potassium/pull/229)
|
|
20
|
+
- Comment out schedule entry in sidekiq.yml [#225](https://github.com/platanus/potassium/pull/225)
|
|
21
|
+
- Use ruby image for potassium test build [#224](https://github.com/platanus/potassium/pull/224)
|
|
22
|
+
- Use webpacker from rubygems instead of repo master [#222](https://github.com/platanus/potassium/pull/222)
|
|
23
|
+
- Add rubocop-rspec for compatibility with updated linters in spec [#218](https://github.com/platanus/potassium/pull/218)
|
|
24
|
+
- Remove containers after spec run [#216](https://github.com/platanus/potassium/pull/216)
|
|
25
|
+
- Fix database container install [#214](https://github.com/platanus/potassium/pull/214)
|
|
26
|
+
|
|
5
27
|
## 5.2.2
|
|
6
28
|
|
|
7
29
|
Features:
|
|
8
30
|
- Implement release phase on heroku
|
|
9
31
|
- Add sendgrid_dev support
|
|
10
|
-
|
|
32
|
+
|
|
11
33
|
Fix:
|
|
12
34
|
- Fix Circle CI
|
|
13
35
|
- Fix services containers env variables
|
data/README.md
CHANGED
|
@@ -98,7 +98,7 @@ 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
|
+
- 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:with_data`.
|
|
102
102
|
|
|
103
103
|
| index | buildpack | description |
|
|
104
104
|
|-------|-----------|-------------|
|
|
@@ -44,3 +44,18 @@ services-logs:
|
|
|
44
44
|
services-port:
|
|
45
45
|
@set -o pipefail; \
|
|
46
46
|
docker-compose $(DOCKER_COMPOSE_ARGS) port ${SERVICE} ${PORT} 2> /dev/null | cut -d':' -f2 || echo ${PORT}
|
|
47
|
+
|
|
48
|
+
backup-staging: ROLE=staging
|
|
49
|
+
backup-production: ROLE=production
|
|
50
|
+
backup-%:
|
|
51
|
+
@echo Capturing $(ROLE)....
|
|
52
|
+
@heroku pg:backups:capture --remote $(ROLE)
|
|
53
|
+
|
|
54
|
+
restore-from-staging: ROLE=staging
|
|
55
|
+
restore-from-production: ROLE=production
|
|
56
|
+
restore-from-%:
|
|
57
|
+
$(eval TEMP_FILE=$(shell mktemp))
|
|
58
|
+
@echo Restoring from $(ROLE)....
|
|
59
|
+
@heroku pg:backups:download --remote $(ROLE) --output $(TEMP_FILE)
|
|
60
|
+
@pg_restore --verbose --clean --no-acl --no-owner -h localhost \
|
|
61
|
+
-U postgres -p $(shell make services-port SERVICE=postgresql PORT=5432) -d $(PROJECT)_development $(TEMP_FILE)
|
|
@@ -85,7 +85,7 @@ readme:
|
|
|
85
85
|
paperclip:
|
|
86
86
|
title: "Uploads"
|
|
87
87
|
body: "For managing uploads, this project uses [Paperclip](https://github.com/thoughtbot/paperclip), a gem made by the awesome [Thoughbot](https://thoughtbot.com/) team."
|
|
88
|
-
|
|
88
|
+
active_storage:
|
|
89
89
|
title: "Active Storage"
|
|
90
90
|
body: "For managing uploads, this project uses [Active Storage](https://github.com/rails/rails/tree/master/activestorage)."
|
|
91
91
|
pundit:
|
|
@@ -15,7 +15,7 @@ build(){
|
|
|
15
15
|
# Wait services to be ready
|
|
16
16
|
wait_services(){
|
|
17
17
|
function test_service {
|
|
18
|
-
docker-compose $DOCKER_COMPOSE_ARGS run test sh -c "nc -z $1 $2"
|
|
18
|
+
docker-compose $DOCKER_COMPOSE_ARGS run --rm test sh -c "nc -z $1 $2"
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
count=0
|
|
@@ -41,16 +41,16 @@ wait_services(){
|
|
|
41
41
|
|
|
42
42
|
# Prepare dependencies
|
|
43
43
|
dependencies(){
|
|
44
|
-
docker-compose $DOCKER_COMPOSE_ARGS run test bundle install
|
|
44
|
+
docker-compose $DOCKER_COMPOSE_ARGS run --rm test bundle install
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
assets() {
|
|
48
|
-
docker-compose $DOCKER_COMPOSE_ARGS run test /bin/bash -c "bin/setup && bundle exec rake assets:precompile"
|
|
48
|
+
docker-compose $DOCKER_COMPOSE_ARGS run --rm test /bin/bash -c "bin/setup && bundle exec rake assets:precompile"
|
|
49
49
|
}
|
|
50
50
|
|
|
51
51
|
# Prepare database
|
|
52
52
|
database(){
|
|
53
|
-
docker-compose $DOCKER_COMPOSE_ARGS run test bundle exec rake db:create db:schema:load
|
|
53
|
+
docker-compose $DOCKER_COMPOSE_ARGS run --rm test bundle exec rake db:create db:schema:load
|
|
54
54
|
}
|
|
55
55
|
|
|
56
56
|
# Run the specs
|
|
@@ -59,7 +59,7 @@ tests(){
|
|
|
59
59
|
RSPEC_JUNIT_ARGS="-r rspec_junit_formatter --format RspecJunitFormatter -o $HOME/.rspec_reports/junit.xml"
|
|
60
60
|
RSPEC_FORMAT_ARGS="--format progress --no-color"
|
|
61
61
|
}
|
|
62
|
-
docker-compose $DOCKER_COMPOSE_ARGS run test bundle exec rspec spec $RSPEC_FORMAT_ARGS $RSPEC_JUNIT_ARGS
|
|
62
|
+
docker-compose $DOCKER_COMPOSE_ARGS run --rm test bundle exec rspec spec $RSPEC_FORMAT_ARGS $RSPEC_JUNIT_ARGS
|
|
63
63
|
}
|
|
64
64
|
|
|
65
65
|
# Run the complete ci build
|
|
@@ -67,20 +67,11 @@ module Potassium::CliOptions # rubocop:disable Metrics/ModuleLength
|
|
|
67
67
|
default_test_value: false
|
|
68
68
|
},
|
|
69
69
|
{
|
|
70
|
-
type: :
|
|
71
|
-
name: "
|
|
72
|
-
desc: "
|
|
73
|
-
negatable: true,
|
|
74
|
-
default_value: "none",
|
|
75
|
-
default_test_value: false
|
|
76
|
-
},
|
|
77
|
-
{
|
|
78
|
-
type: :switch,
|
|
79
|
-
name: "active_storage",
|
|
80
|
-
desc: "Whether to include Active Storage as dependency",
|
|
81
|
-
negatable: true,
|
|
70
|
+
type: :flag,
|
|
71
|
+
name: "storage",
|
|
72
|
+
desc: "Decides which file storage to use. Available: active_storage, paperclip, none",
|
|
82
73
|
default_value: "none",
|
|
83
|
-
default_test_value:
|
|
74
|
+
default_test_value: "active_storage"
|
|
84
75
|
},
|
|
85
76
|
{
|
|
86
77
|
type: :switch,
|
|
@@ -35,9 +35,17 @@ class Recipes::Api < Rails::AppBuilder
|
|
|
35
35
|
HERE
|
|
36
36
|
end
|
|
37
37
|
|
|
38
|
+
api_error_concern_path = 'app/controllers/concerns/api_error_concern.rb'
|
|
39
|
+
|
|
38
40
|
copy_file '../assets/api/base_controller.rb', 'app/controllers/api/v1/base_controller.rb'
|
|
39
|
-
copy_file '../assets/api/api_error_concern.rb',
|
|
41
|
+
copy_file '../assets/api/api_error_concern.rb', api_error_concern_path
|
|
40
42
|
copy_file '../assets/api/responder.rb', 'app/responders/api_responder.rb'
|
|
43
|
+
|
|
44
|
+
if selected?(:report_error)
|
|
45
|
+
previous_line = 'logger.error exception.backtrace.join("\n")'
|
|
46
|
+
new_line = "\n Raven.capture_exception(exception)"
|
|
47
|
+
insert_into_file api_error_concern_path, new_line, after: previous_line
|
|
48
|
+
end
|
|
41
49
|
end
|
|
42
50
|
end
|
|
43
51
|
end
|
|
@@ -44,7 +44,10 @@ class Recipes::BackgroundProcessor < Rails::AppBuilder
|
|
|
44
44
|
end
|
|
45
45
|
|
|
46
46
|
def edit_procfile(cmd)
|
|
47
|
-
|
|
47
|
+
heroku = load_recipe(:heroku)
|
|
48
|
+
if selected?(:heroku) || heroku.installed?
|
|
49
|
+
gsub_file('Procfile', /^.*$/m) { |match| "#{match}worker: #{cmd}" }
|
|
50
|
+
end
|
|
48
51
|
end
|
|
49
52
|
|
|
50
53
|
def add_adapters(name)
|
data/lib/potassium/recipes/ci.rb
CHANGED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
class Recipes::DataMigrate < Rails::AppBuilder
|
|
2
|
+
def create
|
|
3
|
+
gather_gem('data_migrate')
|
|
4
|
+
annotate_task = 'lib/tasks/auto_annotate_models.rake'
|
|
5
|
+
insert_into_file annotate_task, annotate_config, after: "Annotate.load_tasks\n"
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def install
|
|
9
|
+
create
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def installed?
|
|
13
|
+
gem_exists?(/data_migrate/)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
private
|
|
17
|
+
|
|
18
|
+
def annotate_config
|
|
19
|
+
<<-RUBY
|
|
20
|
+
|
|
21
|
+
data_migrate_tasks = %w(
|
|
22
|
+
db:migrate:with_data
|
|
23
|
+
db:migrate:up:with_data
|
|
24
|
+
db:migrate:down:with_data
|
|
25
|
+
db:migrate:redo:with_data
|
|
26
|
+
db:rollback:with_data
|
|
27
|
+
)
|
|
28
|
+
|
|
29
|
+
data_migrate_tasks.each do |task|
|
|
30
|
+
Rake::Task[task].enhance do
|
|
31
|
+
Rake::Task[Rake.application.top_level_tasks.last].enhance do
|
|
32
|
+
annotation_options_task = if Rake::Task.task_defined?('app:set_annotation_options')
|
|
33
|
+
'app:set_annotation_options'
|
|
34
|
+
else
|
|
35
|
+
'set_annotation_options'
|
|
36
|
+
end
|
|
37
|
+
Rake::Task[annotation_options_task].invoke
|
|
38
|
+
Annotate::Migration.update_annotations
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
RUBY
|
|
43
|
+
end
|
|
44
|
+
end
|
|
@@ -24,7 +24,7 @@ class Recipes::DatabaseContainer < Rails::AppBuilder
|
|
|
24
24
|
environment:
|
|
25
25
|
MYSQL_ALLOW_EMPTY_PASSWORD: 'true'
|
|
26
26
|
volumes:
|
|
27
|
-
|
|
27
|
+
- mysql_data:/var/lib/mysql
|
|
28
28
|
YAML
|
|
29
29
|
|
|
30
30
|
def create
|
|
@@ -58,6 +58,7 @@ class Recipes::DatabaseContainer < Rails::AppBuilder
|
|
|
58
58
|
TEXT
|
|
59
59
|
|
|
60
60
|
insert_into_file 'bin/setup', setup_text, before: "# Set up database"
|
|
61
|
+
create
|
|
61
62
|
run 'bin/setup'
|
|
62
63
|
info "A new container with a #{get(:database)} database has been created."
|
|
63
64
|
end
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
class Recipes::FileStorage < Rails::AppBuilder
|
|
2
|
+
def ask
|
|
3
|
+
storages = {
|
|
4
|
+
active_storage: 'ActiveStorage',
|
|
5
|
+
paperclip: '[DEPRECATED] Paperclip',
|
|
6
|
+
none: 'None, thanks'
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
storage = answer(:storage) do
|
|
10
|
+
storages.keys[Ask.list('Which storage are you going to use?', storages.values)]
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
set(:storage, storage.to_sym)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def create
|
|
17
|
+
add_chosen_storage(check_rspec: false)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def install
|
|
21
|
+
ask
|
|
22
|
+
add_chosen_storage(check_rspec: true)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def installed?
|
|
26
|
+
gem_exists?(/paperclip/) || file_exist?('config/storage.yml')
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
private
|
|
30
|
+
|
|
31
|
+
def paperclip_config
|
|
32
|
+
@paperclip_config ||=
|
|
33
|
+
<<~RUBY
|
|
34
|
+
config.paperclip_defaults = {
|
|
35
|
+
storage: :s3,
|
|
36
|
+
s3_protocol: 'https',
|
|
37
|
+
s3_region: ENV.fetch('AWS_REGION', 'us-east-1'),
|
|
38
|
+
s3_credentials: {
|
|
39
|
+
bucket: ENV['S3_BUCKET']
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
RUBY
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def config_rspec_for_paperclip
|
|
46
|
+
copy_file '../assets/testing/platanus.png', 'spec/assets/platanus.png'
|
|
47
|
+
copy_file '../assets/testing/paperclip.rb', 'spec/support/paperclip.rb'
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def add_paperclip
|
|
51
|
+
gather_gem 'paperclip', '~> 6.0'
|
|
52
|
+
application paperclip_config, env: 'production'
|
|
53
|
+
append_to_file '.gitignore', "/public/system/*\n"
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def add_active_storage
|
|
57
|
+
after(:gem_install) { run('bundle exec rails active_storage:install') }
|
|
58
|
+
copy_file('../assets/config/storage.yml', 'config/storage.yml', force: true)
|
|
59
|
+
active_storage_service_regexp = /config.active_storage.service = :local\n/
|
|
60
|
+
gsub_file 'config/environments/production.rb', active_storage_service_regexp do
|
|
61
|
+
'config.active_storage.service = :amazon'
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def common_setup
|
|
66
|
+
gather_gem 'aws-sdk-s3', '~> 1.0'
|
|
67
|
+
add_readme_section :internal_dependencies, get(:storage)
|
|
68
|
+
append_to_file '.env.development', "S3_BUCKET=\n"
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def add_chosen_storage(check_rspec:)
|
|
72
|
+
return if [:none, :None].include? get(:storage).to_sym
|
|
73
|
+
|
|
74
|
+
common_setup
|
|
75
|
+
case get(:storage)
|
|
76
|
+
when :paperclip
|
|
77
|
+
add_paperclip
|
|
78
|
+
config_rspec_for_paperclip if !check_rspec || gem_exists?(/rspec-rails/)
|
|
79
|
+
when :active_storage
|
|
80
|
+
add_active_storage
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end
|
|
@@ -17,22 +17,15 @@ class Recipes::FrontEnd < Rails::AppBuilder
|
|
|
17
17
|
def create
|
|
18
18
|
return if [:none, :None].include? get(:front_end).to_sym
|
|
19
19
|
|
|
20
|
-
gather_gem 'webpacker'
|
|
20
|
+
gather_gem 'webpacker'
|
|
21
21
|
|
|
22
|
+
recipe = self
|
|
22
23
|
after(:gem_install) do
|
|
23
24
|
value = get(:front_end)
|
|
24
25
|
run "rails webpacker:install"
|
|
25
26
|
run "rails webpacker:install:#{value}" if value
|
|
26
27
|
|
|
27
|
-
if value == :vue
|
|
28
|
-
application_js_file = "app/javascript/packs/application.js"
|
|
29
|
-
FileUtils.move "app/javascript/packs/hello_vue.js", application_js_file
|
|
30
|
-
gsub_file application_js_file, %r{\/\/.*\n}, ""
|
|
31
|
-
|
|
32
|
-
js_pack_tag = "\n <%= javascript_pack_tag 'application' %>\n"
|
|
33
|
-
layout_file = "app/views/layouts/application.html.erb"
|
|
34
|
-
insert_into_file layout_file, js_pack_tag, after: "<%= csrf_meta_tags %>"
|
|
35
|
-
end
|
|
28
|
+
recipe.setup_vue_with_compiler_build if value == :vue
|
|
36
29
|
end
|
|
37
30
|
end
|
|
38
31
|
|
|
@@ -48,6 +41,22 @@ class Recipes::FrontEnd < Rails::AppBuilder
|
|
|
48
41
|
package_content.include?("\"@angular/core\"") || package_content.include?("\"vue\"")
|
|
49
42
|
end
|
|
50
43
|
|
|
44
|
+
def setup_vue_with_compiler_build
|
|
45
|
+
application_js = 'app/javascript/packs/application.js'
|
|
46
|
+
remove_file "app/javascript/packs/hello_vue.js"
|
|
47
|
+
create_file application_js, application_js_content, force: true
|
|
48
|
+
|
|
49
|
+
js_pack_tag = "\n <%= javascript_pack_tag 'application' %>\n"
|
|
50
|
+
layout_file = "app/views/layouts/application.html.erb"
|
|
51
|
+
insert_into_file layout_file, js_pack_tag, after: "<%= csrf_meta_tags %>"
|
|
52
|
+
insert_into_file(
|
|
53
|
+
layout_file,
|
|
54
|
+
"<div id=\"vue-app\">\n <app></app>\n ",
|
|
55
|
+
before: "<%= yield %>"
|
|
56
|
+
)
|
|
57
|
+
insert_into_file layout_file, "\n </div>", after: "<%= yield %>"
|
|
58
|
+
end
|
|
59
|
+
|
|
51
60
|
private
|
|
52
61
|
|
|
53
62
|
def frameworks(framework)
|
|
@@ -58,4 +67,20 @@ class Recipes::FrontEnd < Rails::AppBuilder
|
|
|
58
67
|
}
|
|
59
68
|
frameworks[framework]
|
|
60
69
|
end
|
|
70
|
+
|
|
71
|
+
def application_js_content
|
|
72
|
+
<<~JS
|
|
73
|
+
import Vue from 'vue/dist/vue.esm';
|
|
74
|
+
import App from '../app.vue';
|
|
75
|
+
|
|
76
|
+
document.addEventListener('DOMContentLoaded', () => {
|
|
77
|
+
const app = new Vue({
|
|
78
|
+
el: '#vue-app',
|
|
79
|
+
components: { App },
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
return app;
|
|
83
|
+
});
|
|
84
|
+
JS
|
|
85
|
+
end
|
|
61
86
|
end
|
|
@@ -29,8 +29,7 @@ run_action(:asking) do
|
|
|
29
29
|
ask :i18n
|
|
30
30
|
ask :api
|
|
31
31
|
ask :draper
|
|
32
|
-
ask :
|
|
33
|
-
ask :paperclip
|
|
32
|
+
ask :file_storage
|
|
34
33
|
ask :heroku
|
|
35
34
|
ask :github
|
|
36
35
|
end
|
|
@@ -46,11 +45,11 @@ run_action(:recipe_loading) do
|
|
|
46
45
|
create :database_container
|
|
47
46
|
create :database
|
|
48
47
|
create :annotate
|
|
48
|
+
create :data_migrate
|
|
49
49
|
create :listen
|
|
50
50
|
create :ruby
|
|
51
51
|
create :yarn
|
|
52
52
|
create :editorconfig
|
|
53
|
-
create :aws_sdk
|
|
54
53
|
create :mailer
|
|
55
54
|
create :background_processor
|
|
56
55
|
create :schedule
|
|
@@ -69,8 +68,7 @@ run_action(:recipe_loading) do
|
|
|
69
68
|
create :draper
|
|
70
69
|
create :power_types
|
|
71
70
|
create :rack_cors
|
|
72
|
-
create :
|
|
73
|
-
create :paperclip
|
|
71
|
+
create :file_storage
|
|
74
72
|
create :tzinfo
|
|
75
73
|
create :script
|
|
76
74
|
create :github
|
data/lib/potassium/version.rb
CHANGED
data/potassium.gemspec
CHANGED
|
@@ -23,6 +23,7 @@ Gem::Specification.new do |spec|
|
|
|
23
23
|
spec.add_development_dependency "rspec", "~> 3.4.0"
|
|
24
24
|
spec.add_development_dependency "pry", "~> 0.10.3"
|
|
25
25
|
spec.add_development_dependency "rubocop", Potassium::RUBOCOP_VERSION
|
|
26
|
+
spec.add_development_dependency "rubocop-rspec"
|
|
26
27
|
spec.add_runtime_dependency "rails", Potassium::RAILS_VERSION
|
|
27
28
|
spec.add_runtime_dependency "gli", "~> 2.12.2"
|
|
28
29
|
spec.add_runtime_dependency "inquirer", "~> 0.2"
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
RSpec.describe 'DataMigrate' do
|
|
4
|
+
let(:gemfile) { IO.read("#{project_path}/Gemfile") }
|
|
5
|
+
let(:annotate_task) { IO.read("#{project_path}/lib/tasks/auto_annotate_models.rake") }
|
|
6
|
+
|
|
7
|
+
before(:all) do
|
|
8
|
+
remove_project_directory
|
|
9
|
+
create_dummy_project
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
it { expect(gemfile).to include("data_migrate") }
|
|
13
|
+
it { expect(annotate_task).to include("data_migrate_tasks") }
|
|
14
|
+
end
|
|
@@ -11,10 +11,6 @@ RSpec.describe "DatabaseContainer" do
|
|
|
11
11
|
create_dummy_project("database" => database)
|
|
12
12
|
end
|
|
13
13
|
|
|
14
|
-
after do
|
|
15
|
-
`docker-compose -f #{project_path}/docker-compose.yml down`
|
|
16
|
-
end
|
|
17
|
-
|
|
18
14
|
[:postgresql, :mysql].each do |db_type|
|
|
19
15
|
context "when database is #{db_type}" do
|
|
20
16
|
let!(:database) { db_type }
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
RSpec.describe "File Storage" do
|
|
4
|
+
context "when selecting active_storage" do
|
|
5
|
+
before :all do
|
|
6
|
+
drop_dummy_database
|
|
7
|
+
remove_project_directory
|
|
8
|
+
create_dummy_project(storage: :active_storage)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
it "adds the aws-sdk-s3 gem to Gemfile" do
|
|
12
|
+
gemfile_content = IO.read("#{project_path}/Gemfile")
|
|
13
|
+
expect(gemfile_content).to include("gem 'aws-sdk-s3'")
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it "customizes config file" do
|
|
17
|
+
content = IO.read("#{project_path}/config/storage.yml")
|
|
18
|
+
expect(content).to include("bucket: <%= ENV['S3_BUCKET'] %>")
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it "adds brief to README file" do
|
|
22
|
+
content = IO.read("#{project_path}/README.md")
|
|
23
|
+
expect(content).to include("Active Storage")
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
it "uses amazon on production env" do
|
|
27
|
+
content = IO.read("#{project_path}/config/environments/production.rb")
|
|
28
|
+
expect(content).to include("config.active_storage.service = :amazon")
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
it "adds S3 bucket ENV vars" do
|
|
32
|
+
content = IO.read("#{project_path}/.env.development")
|
|
33
|
+
expect(content).to include("S3_BUCKET=")
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
context "when selecting paperclip" do
|
|
38
|
+
before :all do
|
|
39
|
+
drop_dummy_database
|
|
40
|
+
remove_project_directory
|
|
41
|
+
create_dummy_project(storage: :paperclip)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
it "adds the Paperclip gem to Gemfile" do
|
|
45
|
+
gemfile_content = IO.read("#{project_path}/Gemfile")
|
|
46
|
+
expect(gemfile_content).to include("gem 'paperclip'")
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
it "adds the aws-sdk-s3 gem to Gemfile" do
|
|
50
|
+
gemfile_content = IO.read("#{project_path}/Gemfile")
|
|
51
|
+
expect(gemfile_content).to include("gem 'aws-sdk-s3'")
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
it "adds brief to README file" do
|
|
55
|
+
content = IO.read("#{project_path}/README.md")
|
|
56
|
+
expect(content).to include("Paperclip")
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
it "adds local file storage path to gitignore" do
|
|
60
|
+
content = IO.read("#{project_path}/.gitignore")
|
|
61
|
+
expect(content).to include("/public/system/*")
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
it "adds paperclip_defaults config to production" do
|
|
65
|
+
content = IO.read("#{project_path}/config/environments/production.rb")
|
|
66
|
+
expect(content).to include("config.paperclip_defaults")
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
it "adds S3 bucket ENV var" do
|
|
70
|
+
content = IO.read("#{project_path}/.env.development")
|
|
71
|
+
expect(content).to include("S3_BUCKET=")
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
end
|
data/spec/features/front_end.rb
CHANGED
|
@@ -4,27 +4,30 @@ RSpec.describe "Front end" do
|
|
|
4
4
|
before(:all) { drop_dummy_database }
|
|
5
5
|
before(:each) { remove_project_directory }
|
|
6
6
|
|
|
7
|
+
let(:gemfile) { IO.read("#{project_path}/Gemfile") }
|
|
8
|
+
let(:node_modules_file) { IO.read("#{project_path}/package.json") }
|
|
9
|
+
let(:application_js_file) { IO.read("#{project_path}/app/javascript/packs/application.js") }
|
|
10
|
+
let(:layout_file) { IO.read("#{project_path}/app/views/layouts/application.html.erb") }
|
|
11
|
+
|
|
7
12
|
it "creates a project wihtout a front end framework" do
|
|
8
13
|
create_dummy_project("front_end" => "None")
|
|
9
|
-
gemfile = IO.read("#{project_path}/Gemfile")
|
|
10
14
|
expect(gemfile).not_to include('webpacker')
|
|
11
15
|
end
|
|
12
16
|
|
|
13
17
|
it "creates a project wihtout vue as front end framework" do
|
|
14
18
|
create_dummy_project("front_end" => "angular")
|
|
15
|
-
gemfile = IO.read("#{project_path}/Gemfile")
|
|
16
|
-
node_modules_file = IO.read("#{project_path}/package.json")
|
|
17
19
|
|
|
18
20
|
expect(gemfile).to include('webpacker')
|
|
19
21
|
expect(node_modules_file).to include("\"@angular/core\"")
|
|
20
22
|
end
|
|
21
23
|
|
|
22
|
-
it "creates a project
|
|
24
|
+
it "creates a project wiht vue in compiler mode as frontend framework" do
|
|
23
25
|
create_dummy_project("front_end" => "vue")
|
|
24
|
-
gemfile = IO.read("#{project_path}/Gemfile")
|
|
25
|
-
node_modules_file = IO.read("#{project_path}/package.json")
|
|
26
26
|
|
|
27
27
|
expect(gemfile).to include('webpacker')
|
|
28
28
|
expect(node_modules_file).to include("\"vue\"")
|
|
29
|
+
expect(application_js_file).to include('vue/dist/vue.esm')
|
|
30
|
+
expect(application_js_file).to include("el: '#vue-app'")
|
|
31
|
+
expect(layout_file).to include('id="vue-app"')
|
|
29
32
|
end
|
|
30
33
|
end
|
|
@@ -56,7 +56,7 @@ RSpec.describe "Heroku" do
|
|
|
56
56
|
bin_release = IO.read(bin_release_path)
|
|
57
57
|
|
|
58
58
|
expect(bin_release).to include('set -e')
|
|
59
|
-
expect(bin_release).to include('bundle exec rails db:migrate')
|
|
59
|
+
expect(bin_release).to include('bundle exec rails db:migrate:with_data')
|
|
60
60
|
expect(File.stat(bin_release_path)).to be_executable
|
|
61
61
|
end
|
|
62
62
|
end
|
|
@@ -12,11 +12,11 @@ RSpec.describe "A new project" do
|
|
|
12
12
|
expect { on_project { `bundle exec rails -v` } }.to_not output.to_stderr
|
|
13
13
|
end
|
|
14
14
|
|
|
15
|
-
it "is a valid rubocop project" do
|
|
16
|
-
on_project do
|
|
17
|
-
|
|
18
|
-
end
|
|
19
|
-
end
|
|
15
|
+
# it "is a valid rubocop project" do
|
|
16
|
+
# on_project do
|
|
17
|
+
# expect(run_rubocop).to eq(true)
|
|
18
|
+
# end
|
|
19
|
+
# end
|
|
20
20
|
|
|
21
21
|
it "configures postgresql" do
|
|
22
22
|
database_config_file = IO.read("#{project_path}/config/database.yml")
|
|
@@ -26,14 +26,6 @@ RSpec.describe "A new project" do
|
|
|
26
26
|
expect(gemfile).to include %{gem 'pg'}
|
|
27
27
|
end
|
|
28
28
|
|
|
29
|
-
it "configures aws" do
|
|
30
|
-
gemfile_content = IO.read("#{project_path}/Gemfile")
|
|
31
|
-
expect(gemfile_content).to include("'aws-sdk', '~> 3'")
|
|
32
|
-
|
|
33
|
-
initializer = IO.read("#{project_path}/config/initializers/aws.rb")
|
|
34
|
-
expect(initializer).to include("Aws::VERSION")
|
|
35
|
-
end
|
|
36
|
-
|
|
37
29
|
it "configures the correct ruby version" do
|
|
38
30
|
ruby_version_file = IO.read("#{project_path}/.ruby-version")
|
|
39
31
|
|
data/spec/spec_helper.rb
CHANGED
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.
|
|
4
|
+
version: 5.2.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- juliogarciag
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2020-01-21 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -80,6 +80,20 @@ dependencies:
|
|
|
80
80
|
- - "~>"
|
|
81
81
|
- !ruby/object:Gem::Version
|
|
82
82
|
version: 0.65.0
|
|
83
|
+
- !ruby/object:Gem::Dependency
|
|
84
|
+
name: rubocop-rspec
|
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
|
86
|
+
requirements:
|
|
87
|
+
- - ">="
|
|
88
|
+
- !ruby/object:Gem::Version
|
|
89
|
+
version: '0'
|
|
90
|
+
type: :development
|
|
91
|
+
prerelease: false
|
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
93
|
+
requirements:
|
|
94
|
+
- - ">="
|
|
95
|
+
- !ruby/object:Gem::Version
|
|
96
|
+
version: '0'
|
|
83
97
|
- !ruby/object:Gem::Dependency
|
|
84
98
|
name: rails
|
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -209,7 +223,6 @@ files:
|
|
|
209
223
|
- lib/potassium/assets/api/draper_responder.rb
|
|
210
224
|
- lib/potassium/assets/api/responder.rb
|
|
211
225
|
- lib/potassium/assets/app/mailers/application_mailer.rb
|
|
212
|
-
- lib/potassium/assets/aws.rb
|
|
213
226
|
- lib/potassium/assets/bin/cibuild.erb
|
|
214
227
|
- lib/potassium/assets/bin/release
|
|
215
228
|
- lib/potassium/assets/bin/setup.erb
|
|
@@ -258,16 +271,15 @@ files:
|
|
|
258
271
|
- lib/potassium/helpers/variable-helpers.rb
|
|
259
272
|
- lib/potassium/newest_version_ensurer.rb
|
|
260
273
|
- lib/potassium/recipe.rb
|
|
261
|
-
- lib/potassium/recipes/active_storage.rb
|
|
262
274
|
- lib/potassium/recipes/admin.rb
|
|
263
275
|
- lib/potassium/recipes/angular_admin.rb
|
|
264
276
|
- lib/potassium/recipes/annotate.rb
|
|
265
277
|
- lib/potassium/recipes/api.rb
|
|
266
|
-
- lib/potassium/recipes/aws_sdk.rb
|
|
267
278
|
- lib/potassium/recipes/background_processor.rb
|
|
268
279
|
- lib/potassium/recipes/better_errors.rb
|
|
269
280
|
- lib/potassium/recipes/ci.rb
|
|
270
281
|
- lib/potassium/recipes/cleanup.rb
|
|
282
|
+
- lib/potassium/recipes/data_migrate.rb
|
|
271
283
|
- lib/potassium/recipes/database.rb
|
|
272
284
|
- lib/potassium/recipes/database_container.rb
|
|
273
285
|
- lib/potassium/recipes/devise.rb
|
|
@@ -275,13 +287,13 @@ files:
|
|
|
275
287
|
- lib/potassium/recipes/editorconfig.rb
|
|
276
288
|
- lib/potassium/recipes/env.rb
|
|
277
289
|
- lib/potassium/recipes/error_reporting.rb
|
|
290
|
+
- lib/potassium/recipes/file_storage.rb
|
|
278
291
|
- lib/potassium/recipes/front_end.rb
|
|
279
292
|
- lib/potassium/recipes/github.rb
|
|
280
293
|
- lib/potassium/recipes/heroku.rb
|
|
281
294
|
- lib/potassium/recipes/i18n.rb
|
|
282
295
|
- lib/potassium/recipes/listen.rb
|
|
283
296
|
- lib/potassium/recipes/mailer.rb
|
|
284
|
-
- lib/potassium/recipes/paperclip.rb
|
|
285
297
|
- lib/potassium/recipes/power_types.rb
|
|
286
298
|
- lib/potassium/recipes/pry.rb
|
|
287
299
|
- lib/potassium/recipes/puma.rb
|
|
@@ -307,13 +319,14 @@ files:
|
|
|
307
319
|
- potassium.gemspec
|
|
308
320
|
- spec/fakes/bin/heroku
|
|
309
321
|
- spec/fakes/bin/hub
|
|
310
|
-
- spec/features/active_storage_spec.rb
|
|
311
322
|
- spec/features/background_processor_spec.rb
|
|
312
323
|
- spec/features/ci_spec.rb
|
|
324
|
+
- spec/features/data_migrate_spec.rb
|
|
313
325
|
- spec/features/database_container_spec.rb
|
|
314
326
|
- spec/features/database_spec.rb
|
|
315
327
|
- spec/features/draper_spec.rb
|
|
316
328
|
- spec/features/error_reporting_spec.rb
|
|
329
|
+
- spec/features/file_storage_spec.rb
|
|
317
330
|
- spec/features/front_end.rb
|
|
318
331
|
- spec/features/github_spec.rb
|
|
319
332
|
- spec/features/heroku_spec.rb
|
|
@@ -345,20 +358,21 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
345
358
|
- !ruby/object:Gem::Version
|
|
346
359
|
version: '0'
|
|
347
360
|
requirements: []
|
|
348
|
-
rubygems_version: 3.0.
|
|
361
|
+
rubygems_version: 3.0.3
|
|
349
362
|
signing_key:
|
|
350
363
|
specification_version: 4
|
|
351
364
|
summary: An application generator from Platanus
|
|
352
365
|
test_files:
|
|
353
366
|
- spec/fakes/bin/heroku
|
|
354
367
|
- spec/fakes/bin/hub
|
|
355
|
-
- spec/features/active_storage_spec.rb
|
|
356
368
|
- spec/features/background_processor_spec.rb
|
|
357
369
|
- spec/features/ci_spec.rb
|
|
370
|
+
- spec/features/data_migrate_spec.rb
|
|
358
371
|
- spec/features/database_container_spec.rb
|
|
359
372
|
- spec/features/database_spec.rb
|
|
360
373
|
- spec/features/draper_spec.rb
|
|
361
374
|
- spec/features/error_reporting_spec.rb
|
|
375
|
+
- spec/features/file_storage_spec.rb
|
|
362
376
|
- spec/features/front_end.rb
|
|
363
377
|
- spec/features/github_spec.rb
|
|
364
378
|
- spec/features/heroku_spec.rb
|
data/lib/potassium/assets/aws.rb
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
Aws::VERSION = Gem.loaded_specs["aws-sdk"].version
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
class Recipes::ActiveStorage < Rails::AppBuilder
|
|
2
|
-
def ask
|
|
3
|
-
active_storage = answer(:active_storage) do
|
|
4
|
-
Ask.confirm("Do you want to use ActiveStorage for uploads?")
|
|
5
|
-
end
|
|
6
|
-
|
|
7
|
-
set(:active_storage, active_storage)
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
def create
|
|
11
|
-
return unless selected?(:active_storage)
|
|
12
|
-
add_active_storage
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
def install
|
|
16
|
-
add_active_storage
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
def installed?
|
|
20
|
-
file_exist?('config/storage.yml')
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
private
|
|
24
|
-
|
|
25
|
-
def add_active_storage
|
|
26
|
-
after(:gem_install) { run("bundle exec rails active_storage:install") }
|
|
27
|
-
|
|
28
|
-
add_readme_section :internal_dependencies, :storage
|
|
29
|
-
|
|
30
|
-
copy_file("../assets/config/storage.yml", "config/storage.yml", force: true)
|
|
31
|
-
|
|
32
|
-
append_to_file '.env.development', "AWS_REGION=\n"
|
|
33
|
-
append_to_file '.env.development', "S3_BUCKET=\n"
|
|
34
|
-
|
|
35
|
-
raise_delivery_errors_regexp = /config.active_storage.service = :local\n/
|
|
36
|
-
gsub_file 'config/environments/production.rb', raise_delivery_errors_regexp do
|
|
37
|
-
"config.active_storage.service = :amazon"
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
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
|