roro 0.3.8 → 0.3.16

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 (126) hide show
  1. checksums.yaml +5 -5
  2. data/{lib/roro/cli/templates/base → .circleci}/.keep +0 -0
  3. data/.circleci/config.yml +92 -0
  4. data/{lib/roro/cli/templates/ruby_gem → .circleci}/setup-gem-credentials.sh +1 -1
  5. data/.gitignore +2 -2
  6. data/Guardfile +7 -7
  7. data/docker-compose.yml +15 -0
  8. data/lib/roro.rb +1 -2
  9. data/lib/roro/cli.rb +12 -76
  10. data/lib/roro/cli/base/check_dependencies.rb +0 -1
  11. data/lib/roro/cli/base/utilities.rb +0 -1
  12. data/lib/roro/cli/generate/config.rb +6 -8
  13. data/lib/roro/cli/generate/exposed.rb +14 -0
  14. data/lib/roro/cli/generate/{generate_keys.rb → keys.rb} +22 -0
  15. data/lib/roro/cli/generate/obfuscated.rb +17 -0
  16. data/lib/roro/cli/greenfield/rails.rb +36 -0
  17. data/lib/roro/cli/rollon.rb +2 -66
  18. data/lib/roro/cli/rollon/rails.rb +47 -0
  19. data/lib/roro/cli/rollon/{stories/rails/database → rails}/database.rb +3 -4
  20. data/lib/roro/cli/rollon/{stories/rails → rails}/database/with_mysql.rb +2 -2
  21. data/lib/roro/cli/rollon/{stories/rails/database/with_postgres.rb → rails/database/with_postgresql.rb} +2 -2
  22. data/lib/roro/cli/rollon/ruby_gem.rb +1 -0
  23. data/lib/roro/cli/rollon/ruby_gem/with_ci_cd.rb +45 -0
  24. data/lib/roro/cli/rollon/stories.rb +2 -3
  25. data/lib/roro/cli/rollon/stories/stories.rb +0 -4
  26. data/lib/roro/cli/templates/base/.circleci/_defaults.yml +15 -0
  27. data/lib/roro/cli/templates/base/.circleci/_workflow.yml +2 -0
  28. data/lib/roro/cli/templates/base/.circleci/config.job-example.yml +33 -0
  29. data/lib/roro/cli/templates/base/.circleci/jobs/_build.yml +4 -0
  30. data/lib/roro/cli/templates/base/.circleci/jobs/_release.yml +12 -0
  31. data/lib/roro/cli/templates/base/.circleci/workflows/_build_release.yml +10 -0
  32. data/lib/roro/cli/templates/base/.dockerignore +2 -2
  33. data/lib/roro/cli/templates/base/dotenv +1 -0
  34. data/lib/roro/cli/templates/{dockerize → rails/.circleci}/.keep +0 -0
  35. data/lib/roro/cli/templates/rails/.circleci/_aliases.yml +8 -0
  36. data/lib/roro/cli/templates/rails/.circleci/config.yml.tt +15 -0
  37. data/lib/roro/cli/templates/rails/.circleci/jobs/_build.yml +16 -0
  38. data/lib/roro/cli/templates/rails/.circleci/jobs/_push.yml +23 -0
  39. data/lib/roro/cli/templates/rails/.circleci/jobs/_test.yml +10 -0
  40. data/lib/roro/cli/templates/rails/.circleci/setup-gem-credentials.sh +3 -0
  41. data/lib/roro/cli/templates/rails/.circleci/workflows/_build_test_push.yml +9 -0
  42. data/lib/roro/cli/templates/{ruby_gem/roro/env_files → rails}/.keep +0 -0
  43. data/lib/roro/cli/templates/{greenfield/Dockerfile.tt → rails/Dockerfile.greenfield.tt} +11 -7
  44. data/lib/roro/cli/templates/{base → rails}/config/database.mysql.yml +0 -0
  45. data/lib/roro/cli/templates/{base → rails}/config/database.pg.yml +0 -0
  46. data/lib/roro/cli/templates/rails/database/with_mysql/_service.yml +10 -0
  47. data/lib/roro/cli/{rollon/stories/database.rb → templates/rails/database/with_postgresql/.keep} +0 -0
  48. data/lib/roro/cli/templates/rails/database/with_postgresql/_service.yml +7 -0
  49. data/lib/roro/cli/templates/rails/dotenv/.keep +0 -0
  50. data/lib/roro/cli/templates/rails/dotenv/database.mysql.env.tt +3 -0
  51. data/lib/roro/cli/templates/rails/dotenv/database.pg.env.tt +4 -0
  52. data/lib/roro/cli/templates/rails/dotenv/web.env.tt +2 -0
  53. data/lib/roro/cli/templates/rails/roro/.keep +0 -0
  54. data/lib/roro/cli/templates/rails/roro/containers/.keep +0 -0
  55. data/lib/roro/cli/templates/rails/roro/containers/app/.keep +0 -0
  56. data/lib/roro/cli/templates/{base → rails/roro/containers/app}/Dockerfile.tt +18 -9
  57. data/lib/roro/cli/templates/rails/roro/containers/frontend/.keep +0 -0
  58. data/lib/roro/cli/templates/{dockerize → rails/roro}/docker-compose.yml.tt +15 -16
  59. data/lib/roro/cli/templates/rails/roro/docker-entrypoint.sh.tt +8 -0
  60. data/lib/roro/cli/templates/rails/roro/roro/.keep +0 -0
  61. data/lib/roro/cli/templates/rails/roro/roro/containers/.keep +0 -0
  62. data/lib/roro/cli/templates/rails/roro/roro/containers/app/.keep +0 -0
  63. data/lib/roro/cli/templates/rails/roro/roro/containers/frontend/.keep +0 -0
  64. data/lib/roro/cli/templates/rails/roro/roro/docker-entrypoint.sh.tt +8 -0
  65. data/lib/roro/cli/templates/roro/docker-compose.yml.tt +6 -7
  66. data/lib/roro/cli/templates/ruby_gem/.circleci/.keep +0 -0
  67. data/lib/roro/cli/templates/ruby_gem/.circleci/config.yml.tt +16 -0
  68. data/lib/roro/cli/templates/ruby_gem/.circleci/setup-gem-credentials.sh +3 -0
  69. data/lib/roro/cli/templates/ruby_gem/docker-compose.yml +8 -2
  70. data/lib/roro/cli/templates/ruby_gem/roro/containers/.keep +0 -0
  71. data/lib/roro/cli/templates/ruby_gem/roro/containers/ruby_image/Dockerfile.tt +16 -0
  72. data/lib/roro/cli/templates/ruby_gem/roro/containers/ruby_image/ci.env.tt +1 -0
  73. data/lib/roro/cli/templates/stories/ruby_gem/with_ci_cd/_build.yml +11 -0
  74. data/lib/roro/cli/templates/stories/with_mysql/_service.yml +2 -2
  75. data/lib/roro/cli/templates/stories/with_postgresql/_service.yml +2 -2
  76. data/lib/roro/version.rb +1 -1
  77. data/roro.gemspec +5 -5
  78. data/roro/containers/.keep +0 -0
  79. data/roro/containers/ruby_image/Dockerfile +16 -0
  80. data/roro/containers/ruby_image/ci.env.enc +2 -0
  81. data/roro/keys/.keep +0 -0
  82. data/tmp/.keep +0 -0
  83. data/vendor/cache/apparition-0.6.0.gem +0 -0
  84. data/vendor/cache/capybara-3.33.0.gem +0 -0
  85. data/vendor/cache/childprocess-3.0.0.gem +0 -0
  86. data/vendor/cache/handsome_fencer-crypto-0.1.9.gem +0 -0
  87. data/vendor/cache/handsome_fencer-test-0.2.2.gem +0 -0
  88. data/vendor/cache/mini_mime-1.0.2.gem +0 -0
  89. data/vendor/cache/regexp_parser-1.7.1.gem +0 -0
  90. data/vendor/cache/rubyzip-2.3.0.gem +0 -0
  91. data/vendor/cache/selenium-webdriver-3.142.7.gem +0 -0
  92. data/vendor/cache/shoulda-2.11.3.gem +0 -0
  93. data/vendor/cache/shoulda-context-2.0.0.rc2.gem +0 -0
  94. data/vendor/cache/shoulda-matchers-4.4.1.gem +0 -0
  95. data/vendor/cache/websocket-driver-0.7.3.gem +0 -0
  96. data/vendor/cache/websocket-extensions-0.1.5.gem +0 -0
  97. data/vendor/cache/xpath-3.2.0.gem +0 -0
  98. metadata +112 -82
  99. data/lib/roro/cli/cli.rb +0 -99
  100. data/lib/roro/cli/expose.rb +0 -14
  101. data/lib/roro/cli/greenfield.rb +0 -31
  102. data/lib/roro/cli/obfuscate.rb +0 -19
  103. data/lib/roro/cli/rollon/stories/rails.rb +0 -1
  104. data/lib/roro/cli/rollon/stories/ruby_gem.rb +0 -77
  105. data/lib/roro/cli/rollon/stories/ruby_gem/with_ci_cd.rb +0 -60
  106. data/lib/roro/cli/ruby_gem.rb +0 -67
  107. data/lib/roro/cli/templates/circleci/config.yml.tt +0 -70
  108. data/lib/roro/cli/templates/dockerize/Dockerfile.tt +0 -23
  109. data/lib/roro/cli/templates/dockerize/docker-entrypoint.sh +0 -9
  110. data/lib/roro/cli/templates/ruby_gem/.circleci/config.yml +0 -122
  111. data/lib/roro/cli/templates/ruby_gem/roro/containers/gem/Dockerfile.tt +0 -9
  112. data/vendor/cache/actionpack-6.0.3.2.gem +0 -0
  113. data/vendor/cache/actionview-6.0.3.2.gem +0 -0
  114. data/vendor/cache/builder-3.2.4.gem +0 -0
  115. data/vendor/cache/crass-1.0.6.gem +0 -0
  116. data/vendor/cache/erubi-1.9.0.gem +0 -0
  117. data/vendor/cache/handsome_fencer-crypto-0.1.6.gem +0 -0
  118. data/vendor/cache/handsome_fencer-test-0.1.1.gem +0 -0
  119. data/vendor/cache/loofah-2.6.0.gem +0 -0
  120. data/vendor/cache/minitest-rails-6.0.1.gem +0 -0
  121. data/vendor/cache/rails-dom-testing-2.0.3.gem +0 -0
  122. data/vendor/cache/rails-html-sanitizer-1.3.0.gem +0 -0
  123. data/vendor/cache/railties-6.0.3.2.gem +0 -0
  124. data/vendor/cache/shoulda-4.0.0.gem +0 -0
  125. data/vendor/cache/shoulda-context-2.0.0.gem +0 -0
  126. data/vendor/cache/shoulda-matchers-4.3.0.gem +0 -0
@@ -0,0 +1,47 @@
1
+ require 'roro/cli/rollon/stories'
2
+ require 'roro/cli/rollon/rails/database'
3
+
4
+ module Roro
5
+
6
+ class CLI < Thor
7
+
8
+ desc "rollon::rails", "Generates files for and makes changes to your app
9
+ so it can run using Docker containers."
10
+ method_option :interactive, desc: "Set up your environment variables as
11
+ you go."
12
+ map "rollon::rails" => "rollon_rails"
13
+
14
+ def rollon_rails(*args)
15
+ confirm_directory_not_empty
16
+ confirm_dependencies
17
+ configure_for_rollon
18
+ copy_rails_files
19
+ generate_config
20
+ startup_commands
21
+ end
22
+
23
+ no_commands do
24
+
25
+ def copy_rails_files
26
+ template 'rails/.circleci/config.yml.tt', './.circleci/config.yml'
27
+ configure_database
28
+ directory 'roro', './', @config.app
29
+ template 'base/dotenv', './.env', @config.app
30
+ directory 'rails/roro', './roro', @config.app
31
+ take_thor_actions
32
+ end
33
+
34
+ def startup_commands
35
+ success_msg = "'\n\n#{'*' * 5 }\n\nYour Rails app is available at http://localhost:3000/'\n\n#{'*' * 5 }"
36
+ system 'docker-compose build'
37
+ system 'docker-compose run web bundle'
38
+ system 'docker-compose run web bin/rails webpacker:install'
39
+ system 'docker-compose run web bin/rails yarn:install'
40
+ system 'docker-compose run web bin/rails db:create'
41
+ system 'docker-compose run web bin/rails db:migrate'
42
+ system 'docker-compose up -d'
43
+ system "docker-compose run web echo '\n\nYour Rails app is available at http://localhost:3000/'"
44
+ end
45
+ end
46
+ end
47
+ end
@@ -19,10 +19,9 @@ module Roro
19
19
  end
20
20
 
21
21
  %w(development production test staging ci).each do |environment|
22
- template(
23
- 'base/.env/web.env.tt',
24
- "roro/containers/app/#{environment}.env", @config.app
25
- )
22
+ src = 'rails/dotenv/web.env.tt'
23
+ dest = "roro/containers/app/#{environment}.env"
24
+ template src, dest, @config.app
26
25
  end
27
26
  end
28
27
  end
@@ -6,13 +6,13 @@ module Roro
6
6
 
7
7
  def configure_for_mysql
8
8
  insert_db_gem('mysql2')
9
- copy_file 'base/config/database.mysql.yml', 'config/database.yml', force: true
9
+ copy_file 'rails/config/database.mysql.yml', 'config/database.yml', force: true
10
10
  config = @config.app.clone
11
11
 
12
12
  %w(development production test staging ci).each do |environment|
13
13
  config['rails_env'] = environment
14
14
 
15
- source = 'base/.env/database.mysql.env.tt'
15
+ source = 'rails/dotenv/database.mysql.env.tt'
16
16
  target = "roro/containers/database/#{environment}.env"
17
17
  template( source, target, config )
18
18
  end
@@ -6,12 +6,12 @@ module Roro
6
6
 
7
7
  def configure_for_pg
8
8
  insert_db_gem('pg')
9
- copy_file 'base/config/database.pg.yml', 'config/database.yml', force: true
9
+ copy_file 'rails/config/database.pg.yml', 'config/database.yml', force: true
10
10
  config = @config.app.clone
11
11
  %w(development production test staging ci).each do |environment|
12
12
  config['rails_env'] = environment
13
13
 
14
- source = 'base/.env/database.pg.env.tt'
14
+ source = 'rails/dotenv/database.pg.env.tt'
15
15
  target = "roro/containers/database/#{environment}.env"
16
16
  template( source, target, config )
17
17
  end
@@ -0,0 +1 @@
1
+ require 'roro/cli/rollon/ruby_gem/with_ci_cd.rb'
@@ -0,0 +1,45 @@
1
+ module Roro
2
+ class CLI < Thor
3
+
4
+ desc "rollon::ruby_gem::with_ci_cd", "Generate files for containerized gem testing, CircleCI, and releasing to RubyGems."
5
+ map "rollon::ruby_gem::with_ci_cd" => "rollon_ruby_gem_with_ci_cd"
6
+
7
+ def rollon_ruby_gem_with_ci_cd(*args)
8
+ ruby_gem_with_ci_cd(*args)
9
+ configure_for_rollon
10
+ end
11
+
12
+ no_commands do
13
+ def ruby_gem_with_ci_cd(*args)
14
+ answer = ask("\nYou can add your rubygems api key in\n\t
15
+ './roro/containers/ruby_gem/ci.env' \n\nlater, or we'll try to add it here:",
16
+ default: '')
17
+ rubygems_api_key = (answer.eql?("") ? 'some-key' : answer)
18
+ @config.app['rubygems_api_key'] = rubygems_api_key
19
+ @config.app['rubies'] = []
20
+ 3.times do |index|
21
+ newruby = @config.app['ruby_version'].gsub('.', '').to_i - index
22
+ @config.app['rubies'] << newruby.to_s.split('').join('.')
23
+ end
24
+ directory 'ruby_gem/roro', './roro', @config.app
25
+ directory 'ruby_gem/.circleci', './.circleci', @config.app
26
+ copy_file 'ruby_gem/docker-compose.yml', './docker-compose.yml'
27
+
28
+ @config.app['rubies'].each do |ruby|
29
+ file = '.circleci/config.yml'
30
+ spacer = "\n - run: "
31
+ rv = "RUBY_VERSION=#{ruby} docker-compose "
32
+ build = "build ruby_gem"
33
+ up = "up -d --force-recreate ruby_gem"
34
+ run_tests = "run ruby_gem bundle exec rake test"
35
+ append_to_file file, spacer + rv + run_tests, after: "- placeholder"
36
+ append_to_file file, spacer + rv + up, after: "- placeholder"
37
+ append_to_file file, spacer + rv + build, after: "- placeholder"
38
+ end
39
+ gsub_file '.circleci/config.yml', "- placeholder", "- checkout"
40
+ append_to_file ".gitignore", "\nGemfile.lock"
41
+ gitignore_sensitive_files
42
+ end
43
+ end
44
+ end
45
+ end
@@ -1,3 +1,2 @@
1
- require 'roro/cli/rollon/stories/ruby_gem'
2
- require 'roro/cli/rollon/stories/rails'
3
- require 'roro/cli/rollon/stories/database'
1
+ require 'roro/cli/rollon/ruby_gem'
2
+ require 'roro/cli/rollon/rails'
@@ -1,7 +1,3 @@
1
1
  require_relative 'ruby_gem/ruby_gem'
2
2
 
3
- # module Stories
4
- # module RubyGem
5
- # end
6
- # end
7
3
 
@@ -0,0 +1,15 @@
1
+ defaults: &defaults
2
+ executor: machine-executor
3
+ working_directory: ~/project
4
+
5
+ version: 2.1
6
+
7
+ executors:
8
+ machine-executor:
9
+ machine:
10
+ docker_layer_caching: true
11
+ ruby-executor:
12
+ docker:
13
+ - image: cimg/ruby:2.7
14
+
15
+ jobs:
@@ -0,0 +1,2 @@
1
+ workflows:
2
+ version: 2
@@ -0,0 +1,33 @@
1
+ defaults: &defaults
2
+ working_directory: /tmp
3
+
4
+ version: 2
5
+
6
+ jobs:
7
+
8
+ build:
9
+ machine: true
10
+ steps:
11
+ - checkout
12
+ - add_ssh_keys
13
+
14
+ - run: gem install handsome_fencer-circle_c_i
15
+ - run: handsome_fencer-circle_c_i expose circleci
16
+ - run: handsome_fencer-circle_c_i expose development
17
+ - run: echo 'source docker/env_files/circleci.env' >> $BASH_ENV
18
+ - run: docker-compose build
19
+ - run: docker-compose up -d
20
+ - run: docker-compose exec app bin/rails db:create db:migrate
21
+ - run: docker login -u $DOCKERHUB_USER -p $DOCKERHUB_PASS
22
+ - run:
23
+ name: Tag app image
24
+ command: docker tag $(docker images | grep project_app | awk '{ print $3 }') ${DOCKERHUB_ORG_NAME}/${APP_NAME}_app:$DEPLOY_TAG
25
+ - run:
26
+ name: Tag web image
27
+ command: docker tag $(docker images | grep project_web | awk '{ print $3 }') ${DOCKERHUB_ORG_NAME}/${APP_NAME}_web:$DEPLOY_TAG
28
+
29
+
30
+ - run: docker push ${DOCKERHUB_ORG_NAME}/${APP_NAME}_app:$DEPLOY_TAG
31
+ - run: docker push ${DOCKERHUB_ORG_NAME}/${APP_NAME}_web:$DEPLOY_TAG
32
+
33
+ - run: rake --rakefile .circleci/Rakefile
@@ -0,0 +1,4 @@
1
+ build:
2
+ machine: true
3
+ steps:
4
+ - checkout
@@ -0,0 +1,12 @@
1
+ release:
2
+ machine: true
3
+ steps:
4
+ - checkout
5
+ - run: gem install roro
6
+ - run: roro generate::exposed ci
7
+ - run: echo 'source roro/containers/ruby_image/ci.env' >> $BASH_ENV
8
+ - run: chmod +x ./.circleci/setup-gem-credentials.sh
9
+ - run: ./.circleci/setup-gem-credentials.sh
10
+ - run: cat ~/.gem/credentials
11
+ - run: git checkout .
12
+ - run: gem release
@@ -0,0 +1,10 @@
1
+ build-release:
2
+ jobs:
3
+ - build
4
+ - test
5
+ - release:
6
+ requires:
7
+ - build
8
+ filters:
9
+ branches:
10
+ only: release
@@ -1,5 +1,4 @@
1
1
  .git
2
- .gitignore
3
2
  README.md
4
3
 
5
4
  #
@@ -30,7 +29,8 @@ Temporary Items
30
29
  *.rbc
31
30
  capybara-*.html
32
31
  log
33
- tmp
32
+ tmp/*
33
+ !tmp/.keep
34
34
  db/*.sqlite3
35
35
  db/*.sqlite3-journal
36
36
  public/system
@@ -0,0 +1 @@
1
+ RORO_ENV=development
@@ -0,0 +1,8 @@
1
+ aliases:
2
+ - &workspace-location
3
+ at: /tmp/workspace
4
+ - &copy-ci-dotenv |
5
+ cp -rf /tmp/workspace/roro .
6
+ - &source-ci-variables |
7
+ echo 'source roro/containers/app/ci.env' >> $BASH_ENV
8
+ source $BASH_ENV
@@ -0,0 +1,15 @@
1
+ <%= yaml_from_template("rails/.circleci/_aliases.yml") %>
2
+
3
+ <%= yaml_from_template("base/.circleci/_defaults.yml") %>
4
+
5
+ <%= yaml_from_template("rails/.circleci/jobs/_build.yml") %>
6
+
7
+ <%= yaml_from_template("rails/.circleci/jobs/_test.yml") %>
8
+
9
+ <%= yaml_from_template("rails/.circleci/jobs/_push.yml") %>
10
+
11
+ <%= yaml_from_template("base/.circleci/_workflow.yml") %>
12
+
13
+ <%= yaml_from_template("rails/.circleci/workflows/_build_test_push.yml") %>
14
+
15
+
@@ -0,0 +1,16 @@
1
+ build:
2
+ <<: *defaults
3
+ steps:
4
+ - checkout
5
+ - run: |
6
+ gem install roro
7
+ roro generate::exposed ci
8
+ - run: |
9
+ mkdir -p workspace
10
+ cp -r roro workspace/
11
+ - persist_to_workspace:
12
+ root: workspace
13
+ paths:
14
+ - roro
15
+ - run: *source-ci-variables
16
+ - run: RORO_ENV=ci docker-compose up -d --build
@@ -0,0 +1,23 @@
1
+ push:
2
+ machine: true
3
+ steps:
4
+ - checkout
5
+ - run: gem install handsome_fencer-circle_c_i
6
+ - run: handsome_fencer-circle_c_i expose circleci
7
+ - run: handsome_fencer-circle_c_i expose development
8
+ - run: echo 'source docker/env_files/circleci.env' >> $BASH_ENV
9
+ - run: cp docker/overrides/circleci.yml docker-compose.override.yml
10
+ - run: docker-compose build
11
+ - run: docker login -u $DOCKERHUB_USER -p $DOCKERHUB_PASS
12
+ - run:
13
+ name: Tag app image
14
+ command: docker tag $(docker images | grep project_app | awk '{ print $3 }') ${DOCKERHUB_ORG}/${APP_NAME}_app:$DEPLOY_TAG
15
+ # - run: docker tag $(docker images | grep project_app | awk '{ print $3 }') ${DOCKERHUB_ORG}/${APP_NAME}_app:latest
16
+ - run:
17
+ name: Tag app image
18
+ command: docker tag $(docker images | grep project_web | awk '{ print $3 }') ${DOCKERHUB_ORG}/${APP_NAME}_web:$DEPLOY_TAG
19
+ # - run: docker tag $(docker images | grep project_web | awk '{ print $3 }') ${DOCKERHUB_ORG}/${APP_NAME}_web:latest
20
+ - run: docker push ${DOCKERHUB_ORG}/${APP_NAME}_app:$DEPLOY_TAG
21
+ - run: docker push ${DOCKERHUB_ORG}/${APP_NAME}_app:latest
22
+ - run: docker push ${DOCKERHUB_ORG}/${APP_NAME}_web:$DEPLOY_TAG
23
+ - run: docker push ${DOCKERHUB_ORG}/${APP_NAME}_web:latest
@@ -0,0 +1,10 @@
1
+ test:
2
+ <<: *defaults
3
+ steps:
4
+ - checkout
5
+ - attach_workspace: *workspace-location
6
+ - run: *copy-ci-dotenv
7
+ - run: *source-ci-variables
8
+ - run: |
9
+ RORO_ENV=ci docker-compose run web yarn
10
+ RORO_ENV=ci docker-compose run web bin/rails test
@@ -0,0 +1,3 @@
1
+ mkdir ~/.gem
2
+ echo -e "---\r\n:rubygems_api_key: $RUBYGEMS_API_KEY" > ~/.gem/credentials
3
+ chmod 0600 /home/circleci/.gem/credentials
@@ -0,0 +1,9 @@
1
+ build-and-test:
2
+ jobs:
3
+ - build
4
+ - test:
5
+ requires:
6
+ - build
7
+ filters:
8
+ branches:
9
+ only: development
@@ -13,24 +13,28 @@ RUN mkdir ${APP_HOME}
13
13
 
14
14
  ## Tell bundler where to store downloaded gems:
15
15
  ENV BUNDLE_PATH /gems
16
- RUN mkdir ${BUNDLE_PATH}}
16
+ RUN mkdir ${BUNDLE_PATH}
17
17
 
18
18
  ## Tell Docker to create volumes for our workspace and gems
19
19
  ## so other containers can access them.
20
20
  VOLUME ${APP_HOME}
21
- VOLUME /gems
21
+ VOLUME ${BUNDLE_PATH}
22
+
23
+ ## Switch to the the work directory from container root:
24
+ WORKDIR ${APP_HOME}
22
25
 
23
26
  ## Create a Gemfile with just the Rails gem inside:
24
27
  RUN echo "source 'https://rubygems.org'\ngem 'rails'" > Gemfile
25
28
 
26
29
  ## Bundle to install rails:
27
-
28
- ## Switch to the the work directory from container root:
29
- WORKDIR ${APP_HOME}
30
-
31
30
  RUN bundle install
31
+
32
32
  ## Use Rails to generate a new app. We'll configure it later.
33
- RUN bundle exec rails new . --skip-webpack-install --skip-bundle
33
+ RUN bundle exec rails new .
34
+
35
+ ## setup yarn for rails:
36
+ RUN bundle exec rails yarn:install
37
+
34
38
 
35
39
  ## Tell docker not to create a layer:
36
40
  FROM scratch AS export-stage
@@ -0,0 +1,10 @@
1
+ database:
2
+ image: mysql:5.7
3
+ env_file:
4
+ - roro/containers/database/development.env
5
+ - roro/containers/app/development.env
6
+ volumes:
7
+ - db_data:/var/lib/mysql
8
+ restart: always
9
+ ports:
10
+ - '3307:3306'
@@ -0,0 +1,7 @@
1
+ database:
2
+ image: postgres
3
+ env_file:
4
+ - roro/containers/database/development.env
5
+ - roro/containers/app/development.env
6
+ volumes:
7
+ - db_data:/var/lib/postgresql/data
@@ -0,0 +1,3 @@
1
+ <% config['mysql_env_vars'].each do |k,v| %><%= "\n" + k + "=" + v %><% end %>
2
+ MYSQL_DATABASE=<%= config['main_app_name'] + "_db"%>
3
+ RAILS_ENV=<%= config['rails_env'] %>
@@ -0,0 +1,4 @@
1
+ <% config['postgresql_env_vars'].each do |k,v| %><%= "\n" + k + "=" + v %><% end %>
2
+ POSTGRES_DB=<%= config['main_app_name'] + "_" + config['rails_env'] %>
3
+ RAILS_ENV=<%= config['rails_env'] %>
4
+
@@ -0,0 +1,2 @@
1
+ DATABASE_HOST=database
2
+ RAILS_LOG_TO_STDOUT=true