roro 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (235) hide show
  1. checksums.yaml +5 -5
  2. data/.circleci/config.yml +99 -0
  3. data/.circleci/setup-gem-credentials.sh +3 -0
  4. data/.gitignore +7 -1
  5. data/.ruby-gemset +1 -0
  6. data/.ruby-version +1 -0
  7. data/Gemfile.lock +24 -10
  8. data/Guardfile +46 -0
  9. data/bin/roro +5 -0
  10. data/docker/env_files/.keep +0 -0
  11. data/docker/env_files/circleci.env.enc +2 -0
  12. data/docker/keys/.keep +0 -0
  13. data/lib/roro.rb +2 -0
  14. data/lib/roro/cli.rb +18 -0
  15. data/lib/roro/cli/base.rb +124 -0
  16. data/lib/roro/cli/dockerize.rb +30 -0
  17. data/lib/roro/cli/expose.rb +13 -0
  18. data/lib/roro/cli/generate_keys.rb +79 -0
  19. data/lib/roro/cli/greenfield.rb +37 -0
  20. data/lib/roro/cli/obfuscate.rb +20 -0
  21. data/lib/roro/cli/rollon.rb +21 -0
  22. data/lib/roro/cli/templates/Gemfile.lock +0 -0
  23. data/lib/roro/cli/templates/Guardfile +81 -0
  24. data/lib/roro/cli/templates/circleci/Rakefile +4 -0
  25. data/lib/roro/cli/templates/circleci/config.job-example.yml +33 -0
  26. data/lib/roro/cli/templates/circleci/config.yml +69 -0
  27. data/lib/roro/cli/templates/circleci/config.yml.workflow-example +62 -0
  28. data/lib/roro/cli/templates/circleci/deploy.rake +127 -0
  29. data/lib/roro/cli/templates/config.yml +71 -0
  30. data/lib/roro/cli/templates/config/database.yml +20 -0
  31. data/lib/roro/cli/templates/docker-compose.yml +51 -0
  32. data/lib/roro/cli/templates/docker/containers/app/Dockerfile.tt +12 -0
  33. data/lib/roro/cli/templates/docker/containers/database/.keep +0 -0
  34. data/lib/roro/cli/templates/docker/containers/web/Dockerfile.tt +18 -0
  35. data/lib/roro/cli/templates/docker/containers/web/app.conf.tt +23 -0
  36. data/lib/roro/cli/templates/docker/env_files/.keep +0 -0
  37. data/lib/roro/cli/templates/docker/keys/.keep +0 -0
  38. data/lib/roro/cli/templates/docker/overrides/circleci.yml.tt +19 -0
  39. data/lib/roro/cli/templates/docker/overrides/production.yml.tt +26 -0
  40. data/lib/roro/cli/templates/docker/web/Dockerfile +20 -0
  41. data/lib/roro/cli/templates/docker/web/app.conf +23 -0
  42. data/lib/roro/cli/templates/gitignore +27 -0
  43. data/lib/roro/cli/templates/greenfield/Dockerfile +8 -0
  44. data/lib/roro/cli/templates/greenfield/Gemfile +2 -0
  45. data/lib/roro/cli/templates/greenfield/Gemfile.lock +0 -0
  46. data/lib/roro/cli/templates/greenfield/config/database.yml.example +16 -0
  47. data/lib/roro/cli/templates/greenfield/docker-compose.yml +15 -0
  48. data/lib/roro/cli/templates/lib/tasks/deploy.rake +126 -0
  49. data/lib/roro/version.rb +1 -1
  50. data/lib/tasks/deploy.rake +126 -0
  51. data/roro.gemspec +9 -2
  52. data/test_apps/dummy/.gitignore +27 -0
  53. data/test_apps/dummy/Gemfile +61 -0
  54. data/test_apps/dummy/README.md +24 -0
  55. data/test_apps/dummy/Rakefile +6 -0
  56. data/test_apps/dummy/app/assets/config/manifest.js +3 -0
  57. data/test_apps/dummy/app/assets/images/.keep +0 -0
  58. data/test_apps/dummy/app/assets/javascripts/application.js +16 -0
  59. data/test_apps/dummy/app/assets/javascripts/cable.js +13 -0
  60. data/test_apps/dummy/app/assets/javascripts/channels/.keep +0 -0
  61. data/test_apps/dummy/app/assets/stylesheets/application.css +15 -0
  62. data/test_apps/dummy/app/channels/application_cable/channel.rb +4 -0
  63. data/test_apps/dummy/app/channels/application_cable/connection.rb +4 -0
  64. data/test_apps/dummy/app/controllers/application_controller.rb +2 -0
  65. data/test_apps/dummy/app/controllers/concerns/.keep +0 -0
  66. data/test_apps/dummy/app/helpers/application_helper.rb +2 -0
  67. data/test_apps/dummy/app/jobs/application_job.rb +2 -0
  68. data/test_apps/dummy/app/mailers/application_mailer.rb +4 -0
  69. data/test_apps/dummy/app/models/application_record.rb +3 -0
  70. data/test_apps/dummy/app/models/concerns/.keep +0 -0
  71. data/test_apps/dummy/app/views/layouts/application.html.erb +15 -0
  72. data/test_apps/dummy/app/views/layouts/mailer.html.erb +13 -0
  73. data/test_apps/dummy/app/views/layouts/mailer.text.erb +1 -0
  74. data/test_apps/dummy/bin/bundle +3 -0
  75. data/test_apps/dummy/bin/rails +4 -0
  76. data/test_apps/dummy/bin/rake +4 -0
  77. data/test_apps/dummy/bin/setup +36 -0
  78. data/test_apps/dummy/bin/update +31 -0
  79. data/test_apps/dummy/bin/yarn +11 -0
  80. data/test_apps/dummy/config.ru +5 -0
  81. data/test_apps/dummy/config/application.rb +19 -0
  82. data/test_apps/dummy/config/boot.rb +4 -0
  83. data/test_apps/dummy/config/cable.yml +10 -0
  84. data/test_apps/dummy/config/credentials.yml.enc +1 -0
  85. data/test_apps/dummy/config/database.yml +85 -0
  86. data/test_apps/dummy/config/environment.rb +5 -0
  87. data/test_apps/dummy/config/environments/development.rb +61 -0
  88. data/test_apps/dummy/config/environments/production.rb +94 -0
  89. data/test_apps/dummy/config/environments/test.rb +46 -0
  90. data/test_apps/dummy/config/initializers/application_controller_renderer.rb +8 -0
  91. data/test_apps/dummy/config/initializers/assets.rb +14 -0
  92. data/test_apps/dummy/config/initializers/backtrace_silencers.rb +7 -0
  93. data/test_apps/dummy/config/initializers/content_security_policy.rb +25 -0
  94. data/test_apps/dummy/config/initializers/cookies_serializer.rb +5 -0
  95. data/test_apps/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  96. data/test_apps/dummy/config/initializers/inflections.rb +16 -0
  97. data/test_apps/dummy/config/initializers/mime_types.rb +4 -0
  98. data/test_apps/dummy/config/initializers/wrap_parameters.rb +14 -0
  99. data/test_apps/dummy/config/locales/en.yml +33 -0
  100. data/test_apps/dummy/config/puma.rb +34 -0
  101. data/test_apps/dummy/config/routes.rb +3 -0
  102. data/test_apps/dummy/config/spring.rb +6 -0
  103. data/test_apps/dummy/config/storage.yml +34 -0
  104. data/test_apps/dummy/db/seeds.rb +7 -0
  105. data/test_apps/dummy/lib/assets/.keep +0 -0
  106. data/test_apps/dummy/lib/tasks/.keep +0 -0
  107. data/test_apps/dummy/log/.keep +0 -0
  108. data/test_apps/dummy/package.json +5 -0
  109. data/test_apps/dummy/public/404.html +67 -0
  110. data/test_apps/dummy/public/422.html +67 -0
  111. data/test_apps/dummy/public/500.html +66 -0
  112. data/test_apps/dummy/public/apple-touch-icon-precomposed.png +0 -0
  113. data/test_apps/dummy/public/apple-touch-icon.png +0 -0
  114. data/test_apps/dummy/public/favicon.ico +0 -0
  115. data/test_apps/dummy/public/robots.txt +1 -0
  116. data/test_apps/dummy/storage/.keep +0 -0
  117. data/test_apps/dummy/test/application_system_test_case.rb +5 -0
  118. data/test_apps/dummy/test/controllers/.keep +0 -0
  119. data/test_apps/dummy/test/fixtures/.keep +0 -0
  120. data/test_apps/dummy/test/fixtures/files/.keep +0 -0
  121. data/test_apps/dummy/test/helpers/.keep +0 -0
  122. data/test_apps/dummy/test/integration/.keep +0 -0
  123. data/test_apps/dummy/test/mailers/.keep +0 -0
  124. data/test_apps/dummy/test/models/.keep +0 -0
  125. data/test_apps/dummy/test/system/.keep +0 -0
  126. data/test_apps/dummy/test/test_helper.rb +10 -0
  127. data/test_apps/dummy/vendor/.keep +0 -0
  128. data/test_apps/dummy_roro/.circleci/Rakefile +4 -0
  129. data/test_apps/dummy_roro/.circleci/config.job-example.yml +33 -0
  130. data/test_apps/dummy_roro/.circleci/config.yml +69 -0
  131. data/test_apps/dummy_roro/.circleci/config.yml.workflow-example +62 -0
  132. data/test_apps/dummy_roro/.circleci/deploy.rake +127 -0
  133. data/test_apps/dummy_roro/.gitignore +27 -0
  134. data/test_apps/dummy_roro/Gemfile +64 -0
  135. data/test_apps/dummy_roro/README.md +24 -0
  136. data/test_apps/dummy_roro/Rakefile +6 -0
  137. data/test_apps/dummy_roro/app/assets/config/manifest.js +3 -0
  138. data/test_apps/dummy_roro/app/assets/images/.keep +0 -0
  139. data/test_apps/dummy_roro/app/assets/javascripts/application.js +16 -0
  140. data/test_apps/dummy_roro/app/assets/javascripts/cable.js +13 -0
  141. data/test_apps/dummy_roro/app/assets/javascripts/channels/.keep +0 -0
  142. data/test_apps/dummy_roro/app/assets/stylesheets/application.css +15 -0
  143. data/test_apps/dummy_roro/app/channels/application_cable/channel.rb +4 -0
  144. data/test_apps/dummy_roro/app/channels/application_cable/connection.rb +4 -0
  145. data/test_apps/dummy_roro/app/controllers/application_controller.rb +2 -0
  146. data/test_apps/dummy_roro/app/controllers/concerns/.keep +0 -0
  147. data/test_apps/dummy_roro/app/helpers/application_helper.rb +2 -0
  148. data/test_apps/dummy_roro/app/jobs/application_job.rb +2 -0
  149. data/test_apps/dummy_roro/app/mailers/application_mailer.rb +4 -0
  150. data/test_apps/dummy_roro/app/models/application_record.rb +3 -0
  151. data/test_apps/dummy_roro/app/models/concerns/.keep +0 -0
  152. data/test_apps/dummy_roro/app/views/layouts/application.html.erb +15 -0
  153. data/test_apps/dummy_roro/app/views/layouts/mailer.html.erb +13 -0
  154. data/test_apps/dummy_roro/app/views/layouts/mailer.text.erb +1 -0
  155. data/test_apps/dummy_roro/bin/bundle +3 -0
  156. data/test_apps/dummy_roro/bin/rails +4 -0
  157. data/test_apps/dummy_roro/bin/rake +4 -0
  158. data/test_apps/dummy_roro/bin/setup +36 -0
  159. data/test_apps/dummy_roro/bin/update +31 -0
  160. data/test_apps/dummy_roro/bin/yarn +11 -0
  161. data/test_apps/dummy_roro/config.ru +5 -0
  162. data/test_apps/dummy_roro/config/application.rb +19 -0
  163. data/test_apps/dummy_roro/config/boot.rb +4 -0
  164. data/test_apps/dummy_roro/config/cable.yml +10 -0
  165. data/test_apps/dummy_roro/config/credentials.yml.enc +1 -0
  166. data/test_apps/dummy_roro/config/database.yml +20 -0
  167. data/test_apps/dummy_roro/config/environment.rb +5 -0
  168. data/test_apps/dummy_roro/config/environments/development.rb +61 -0
  169. data/test_apps/dummy_roro/config/environments/production.rb +94 -0
  170. data/test_apps/dummy_roro/config/environments/test.rb +46 -0
  171. data/test_apps/dummy_roro/config/initializers/application_controller_renderer.rb +8 -0
  172. data/test_apps/dummy_roro/config/initializers/assets.rb +14 -0
  173. data/test_apps/dummy_roro/config/initializers/backtrace_silencers.rb +7 -0
  174. data/test_apps/dummy_roro/config/initializers/content_security_policy.rb +25 -0
  175. data/test_apps/dummy_roro/config/initializers/cookies_serializer.rb +5 -0
  176. data/test_apps/dummy_roro/config/initializers/filter_parameter_logging.rb +4 -0
  177. data/test_apps/dummy_roro/config/initializers/inflections.rb +16 -0
  178. data/test_apps/dummy_roro/config/initializers/mime_types.rb +4 -0
  179. data/test_apps/dummy_roro/config/initializers/wrap_parameters.rb +14 -0
  180. data/test_apps/dummy_roro/config/locales/en.yml +33 -0
  181. data/test_apps/dummy_roro/config/puma.rb +34 -0
  182. data/test_apps/dummy_roro/config/routes.rb +3 -0
  183. data/test_apps/dummy_roro/config/spring.rb +6 -0
  184. data/test_apps/dummy_roro/config/storage.yml +34 -0
  185. data/test_apps/dummy_roro/db/seeds.rb +7 -0
  186. data/test_apps/dummy_roro/docker-compose.yml +51 -0
  187. data/test_apps/dummy_roro/docker/containers/app/Dockerfile +12 -0
  188. data/test_apps/dummy_roro/docker/containers/app/circleci.env +2 -0
  189. data/test_apps/dummy_roro/docker/containers/app/development.env +2 -0
  190. data/test_apps/dummy_roro/docker/containers/app/production.env +2 -0
  191. data/test_apps/dummy_roro/docker/containers/app/staging.env +2 -0
  192. data/test_apps/dummy_roro/docker/containers/database/.keep +0 -0
  193. data/test_apps/dummy_roro/docker/containers/database/circleci.env +3 -0
  194. data/test_apps/dummy_roro/docker/containers/database/development.env +3 -0
  195. data/test_apps/dummy_roro/docker/containers/database/production.env +3 -0
  196. data/test_apps/dummy_roro/docker/containers/database/staging.env +3 -0
  197. data/test_apps/dummy_roro/docker/containers/web/Dockerfile +18 -0
  198. data/test_apps/dummy_roro/docker/containers/web/app.conf +23 -0
  199. data/test_apps/dummy_roro/docker/containers/web/circleci.env +1 -0
  200. data/test_apps/dummy_roro/docker/containers/web/development.env +1 -0
  201. data/test_apps/dummy_roro/docker/containers/web/production.env +1 -0
  202. data/test_apps/dummy_roro/docker/containers/web/staging.env +1 -0
  203. data/test_apps/dummy_roro/docker/env_files/circleci.env +12 -0
  204. data/test_apps/dummy_roro/docker/env_files/circleci.env.enc +14 -0
  205. data/test_apps/dummy_roro/docker/env_files/production.env +2 -0
  206. data/test_apps/dummy_roro/docker/env_files/production.env.enc +2 -0
  207. data/test_apps/dummy_roro/docker/keys/.keep +0 -0
  208. data/test_apps/dummy_roro/docker/overrides/circleci.yml +19 -0
  209. data/test_apps/dummy_roro/docker/overrides/production.yml +26 -0
  210. data/test_apps/dummy_roro/lib/assets/.keep +0 -0
  211. data/test_apps/dummy_roro/lib/tasks/.keep +0 -0
  212. data/test_apps/dummy_roro/lib/tasks/deploy.rake +126 -0
  213. data/test_apps/dummy_roro/log/.keep +0 -0
  214. data/test_apps/dummy_roro/package.json +5 -0
  215. data/test_apps/dummy_roro/public/404.html +67 -0
  216. data/test_apps/dummy_roro/public/422.html +67 -0
  217. data/test_apps/dummy_roro/public/500.html +66 -0
  218. data/test_apps/dummy_roro/public/apple-touch-icon-precomposed.png +0 -0
  219. data/test_apps/dummy_roro/public/apple-touch-icon.png +0 -0
  220. data/test_apps/dummy_roro/public/favicon.ico +0 -0
  221. data/test_apps/dummy_roro/public/robots.txt +1 -0
  222. data/test_apps/dummy_roro/storage/.keep +0 -0
  223. data/test_apps/dummy_roro/test/application_system_test_case.rb +5 -0
  224. data/test_apps/dummy_roro/test/controllers/.keep +0 -0
  225. data/test_apps/dummy_roro/test/fixtures/.keep +0 -0
  226. data/test_apps/dummy_roro/test/fixtures/files/.keep +0 -0
  227. data/test_apps/dummy_roro/test/helpers/.keep +0 -0
  228. data/test_apps/dummy_roro/test/integration/.keep +0 -0
  229. data/test_apps/dummy_roro/test/mailers/.keep +0 -0
  230. data/test_apps/dummy_roro/test/models/.keep +0 -0
  231. data/test_apps/dummy_roro/test/system/.keep +0 -0
  232. data/test_apps/dummy_roro/test/test_helper.rb +10 -0
  233. data/test_apps/dummy_roro/vendor/.keep +0 -0
  234. data/test_apps/greenfield/.keep +0 -0
  235. metadata +292 -5
@@ -0,0 +1,8 @@
1
+ FROM ruby:2.5
2
+ RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs
3
+ RUN mkdir /myapp
4
+ WORKDIR /myapp
5
+ COPY Gemfile /myapp/Gemfile
6
+ COPY Gemfile.lock /myapp/Gemfile.lock
7
+ RUN bundle install
8
+ COPY . /myapp
@@ -0,0 +1,2 @@
1
+ source 'https://rubygems.org'
2
+ gem 'rails'
@@ -0,0 +1,16 @@
1
+ default: &default
2
+ adapter: postgresql
3
+ encoding: unicode
4
+ host: db
5
+ username: postgres
6
+ password:
7
+ pool: 5
8
+
9
+ development:
10
+ <<: *default
11
+ database: myapp_development
12
+
13
+
14
+ test:
15
+ <<: *default
16
+ database: myapp_test
@@ -0,0 +1,15 @@
1
+ version: '3'
2
+ services:
3
+ db:
4
+ image: postgres
5
+ volumes:
6
+ - ./tmp/db:/var/lib/postgresql/data
7
+ web:
8
+ build: .
9
+ command: bundle exec rails s -p 3000 -b '0.0.0.0'
10
+ volumes:
11
+ - .:/myapp
12
+ ports:
13
+ - "3000:3000"
14
+ depends_on:
15
+ - db
@@ -0,0 +1,126 @@
1
+ # use SSHKit directly instead of Capistrano
2
+ require 'sshkit'
3
+ require 'sshkit/dsl'
4
+ include SSHKit::DSL
5
+
6
+ deploy_tag = ENV['DEPLOY_TAG']
7
+ hostname = ENV['SERVER_HOST']
8
+ user = ENV['SERVER_USER']
9
+ dockerhub_user = ENV['DOCKERHUB_USER']
10
+ dockerhub_pass = ENV['DOCKERHUB_PASS']
11
+ dockerhub_org = ENV['DOCKERHUB_ORG']
12
+ port = ENV['SERVER_PORT']
13
+ deploy_env = ENV['DEPLOY_ENV'] || :production
14
+ deploy_path = ENV['APP_NAME']
15
+
16
+ server = SSHKit::Host.new(hostname: hostname, port: port, user: user)
17
+
18
+ namespace :deploy do
19
+
20
+ desc 'copy to server files needed to run and manage Docker containers'
21
+ task :configs do
22
+
23
+ on server do
24
+ within deploy_path do
25
+ upload! File.expand_path('../../docker/overrides/production.docker-compose.yml', __dir__), 'docker-compose.yml'
26
+ upload! File.expand_path('../../docker', __dir__), '.', recursive: true
27
+ execute 'apt', 'install', 'ruby'
28
+ execute 'gem', 'install', 'handsome_fencer-circle_c_i'
29
+ execute 'handsome_fencer-circle_c_i', 'expose', 'production'
30
+ end
31
+ end
32
+ end
33
+
34
+ desc 'copy production key to server'
35
+ task :production_key do
36
+
37
+ on server do
38
+ within deploy_path do
39
+
40
+ upload! '.circleci/keys/production.key', '.circleci/keys/production.key'
41
+ end
42
+ end
43
+ end
44
+
45
+ desc 'expose production environment'
46
+ task :expose_production_environment do
47
+
48
+ on server do
49
+ within deploy_path do
50
+
51
+ execute 'apt', 'install', 'ruby'
52
+ execute 'gem', 'install', 'handsome_fencer-circle_c_i'
53
+ execute 'handsome_fencer-circle_c_i', 'expose', 'production'
54
+ end
55
+ end
56
+ end
57
+ end
58
+
59
+
60
+ namespace :docker do
61
+
62
+ desc 'logs into Docker Hub for pushing and pulling'
63
+
64
+ task :login do
65
+ on server do
66
+ execute "mkdir -p #{deploy_path}"
67
+ within deploy_path do
68
+ execute 'docker', 'login', '-u', dockerhub_user, '-p', dockerhub_pass
69
+ end
70
+ end
71
+ end
72
+
73
+ desc 'stops all Docker containers via Docker Compose'
74
+
75
+ task stop: 'deploy:configs' do
76
+ on server do
77
+ within deploy_path do
78
+ with rails_env: deploy_env, deploy_tag: deploy_tag do
79
+ execute 'docker-compose', 'stop'
80
+
81
+ end
82
+ end
83
+ end
84
+ end
85
+
86
+ desc 'starts all Docker containers via Docker Compose'
87
+
88
+ task start: 'deploy:configs' do
89
+ on server do
90
+ within deploy_path do
91
+ with rails_env: deploy_env, deploy_tag: deploy_tag do
92
+ execute 'docker-compose', 'up', '-d'
93
+ execute 'echo', deploy_tag , '>', 'deploy.tag'
94
+ end
95
+ end
96
+ end
97
+ end
98
+
99
+ desc 'pulls images from Docker Hub'
100
+
101
+ task pull: 'docker:login' do
102
+ on server do
103
+ within deploy_path do
104
+ ["#{deploy_path}_app", "#{deploy_path}_web"].each do |image_name|
105
+ execute 'docker', 'pull', "#{dockerhub_org}/#{image_name}:#{deploy_tag}"
106
+ end
107
+ execute 'docker', 'pull', 'postgres:9.4.5'
108
+ end
109
+ end
110
+ end
111
+
112
+
113
+ desc 'runs database migrations in application container via Docker Compose'
114
+ task migrate: 'deploy:configs' do
115
+ on server do
116
+ within deploy_path do
117
+ with rails_env: deploy_env, deploy_tag: deploy_tag do
118
+ execute 'docker-compose', 'run', 'app', "bin/rails", 'db:create', 'db:migrate'
119
+ end
120
+ end
121
+ end
122
+ end
123
+
124
+ desc 'pulls images, stops old containers, updates the database, and starts new containers'
125
+ task deploy: %w{docker:pull docker:stop docker:migrate docker:start }
126
+ end
@@ -1,3 +1,3 @@
1
1
  module Roro
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
@@ -0,0 +1,126 @@
1
+ # use SSHKit directly instead of Capistrano
2
+ require 'sshkit'
3
+ require 'sshkit/dsl'
4
+ include SSHKit::DSL
5
+
6
+ deploy_tag = ENV['DEPLOY_TAG']
7
+ hostname = ENV['SERVER_HOST']
8
+ user = ENV['SERVER_USER']
9
+ dockerhub_user = ENV['DOCKERHUB_USER']
10
+ dockerhub_pass = ENV['DOCKERHUB_PASS']
11
+ dockerhub_org = ENV['DOCKERHUB_ORG']
12
+ port = ENV['SERVER_PORT']
13
+ deploy_env = ENV['DEPLOY_ENV'] || :production
14
+ deploy_path = ENV['APP_NAME']
15
+
16
+ server = SSHKit::Host.new(hostname: hostname, port: port, user: user)
17
+
18
+ namespace :deploy do
19
+
20
+ desc 'copy to server files needed to run and manage Docker containers'
21
+ task :configs do
22
+
23
+ on server do
24
+ within deploy_path do
25
+ upload! File.expand_path('../../docker/overrides/production.docker-compose.yml', __dir__), 'docker-compose.yml'
26
+ upload! File.expand_path('../../docker', __dir__), '.', recursive: true
27
+ execute 'apt', 'install', 'ruby'
28
+ execute 'gem', 'install', 'handsome_fencer-circle_c_i'
29
+ execute 'handsome_fencer-circle_c_i', 'expose', 'production'
30
+ end
31
+ end
32
+ end
33
+
34
+ desc 'copy production key to server'
35
+ task :production_key do
36
+
37
+ on server do
38
+ within deploy_path do
39
+
40
+ upload! '.circleci/keys/production.key', '.circleci/keys/production.key'
41
+ end
42
+ end
43
+ end
44
+
45
+ desc 'expose production environment'
46
+ task :expose_production_environment do
47
+
48
+ on server do
49
+ within deploy_path do
50
+
51
+ execute 'apt', 'install', 'ruby'
52
+ execute 'gem', 'install', 'handsome_fencer-circle_c_i'
53
+ execute 'handsome_fencer-circle_c_i', 'expose', 'production'
54
+ end
55
+ end
56
+ end
57
+ end
58
+
59
+
60
+ namespace :docker do
61
+
62
+ desc 'logs into Docker Hub for pushing and pulling'
63
+
64
+ task :login do
65
+ on server do
66
+ execute "mkdir -p #{deploy_path}"
67
+ within deploy_path do
68
+ execute 'docker', 'login', '-u', dockerhub_user, '-p', dockerhub_pass
69
+ end
70
+ end
71
+ end
72
+
73
+ desc 'stops all Docker containers via Docker Compose'
74
+
75
+ task stop: 'deploy:configs' do
76
+ on server do
77
+ within deploy_path do
78
+ with rails_env: deploy_env, deploy_tag: deploy_tag do
79
+ execute 'docker-compose', 'stop'
80
+
81
+ end
82
+ end
83
+ end
84
+ end
85
+
86
+ desc 'starts all Docker containers via Docker Compose'
87
+
88
+ task start: 'deploy:configs' do
89
+ on server do
90
+ within deploy_path do
91
+ with rails_env: deploy_env, deploy_tag: deploy_tag do
92
+ execute 'docker-compose', 'up', '-d'
93
+ execute 'echo', deploy_tag , '>', 'deploy.tag'
94
+ end
95
+ end
96
+ end
97
+ end
98
+
99
+ desc 'pulls images from Docker Hub'
100
+
101
+ task pull: 'docker:login' do
102
+ on server do
103
+ within deploy_path do
104
+ ["#{deploy_path}_app", "#{deploy_path}_web"].each do |image_name|
105
+ execute 'docker', 'pull', "#{dockerhub_org}/#{image_name}:#{deploy_tag}"
106
+ end
107
+ execute 'docker', 'pull', 'postgres:9.4.5'
108
+ end
109
+ end
110
+ end
111
+
112
+
113
+ desc 'runs database migrations in application container via Docker Compose'
114
+ task migrate: 'deploy:configs' do
115
+ on server do
116
+ within deploy_path do
117
+ with rails_env: deploy_env, deploy_tag: deploy_tag do
118
+ execute 'docker-compose', 'run', 'app', "bin/rails", 'db:create', 'db:migrate'
119
+ end
120
+ end
121
+ end
122
+ end
123
+
124
+ desc 'pulls images, stops old containers, updates the database, and starts new containers'
125
+ task deploy: %w{docker:pull docker:stop docker:migrate docker:start }
126
+ end
@@ -31,11 +31,18 @@ Gem::Specification.new do |spec|
31
31
  spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
32
32
  `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
33
33
  end
34
- spec.bindir = "exe"
35
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
34
+ spec.executables << 'roro'
35
+
36
+ # spec.bindir = "exe"
37
+ # spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
36
38
  spec.require_paths = ["lib"]
37
39
 
40
+ spec.add_dependency "thor"
41
+ spec.add_dependency "sshkit"
42
+ spec.add_dependency "handsome_fencer-crypto", "0.1.4"
38
43
  spec.add_development_dependency "bundler", "~> 1.17"
39
44
  spec.add_development_dependency "rake", "~> 10.0"
45
+ spec.add_development_dependency "byebug"
40
46
  spec.add_development_dependency "handsome_fencer-test"
47
+
41
48
  end
@@ -0,0 +1,27 @@
1
+ # See https://help.github.com/articles/ignoring-files for more about ignoring files.
2
+ #
3
+ # If you find yourself ignoring temporary files generated by your text editor
4
+ # or operating system, you probably want to add a global ignore instead:
5
+ # git config --global core.excludesfile '~/.gitignore_global'
6
+
7
+ # Ignore bundler config.
8
+ /.bundle
9
+
10
+ # Ignore all logfiles and tempfiles.
11
+ /log/*
12
+ /tmp/*
13
+ !/log/.keep
14
+ !/tmp/.keep
15
+
16
+ # Ignore uploaded files in development
17
+ /storage/*
18
+ !/storage/.keep
19
+
20
+ /node_modules
21
+ /yarn-error.log
22
+
23
+ /public/assets
24
+ .byebug_history
25
+
26
+ # Ignore master key for decrypting credentials and more.
27
+ /config/master.key
@@ -0,0 +1,61 @@
1
+ source 'https://rubygems.org'
2
+ git_source(:github) { |repo| "https://github.com/#{repo}.git" }
3
+
4
+
5
+ # Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
6
+ gem 'rails', '~> 5.2.2'
7
+ # Use postgresql as the database for Active Record
8
+ gem 'pg', '>= 0.18', '< 2.0'
9
+ # Use Puma as the app server
10
+ gem 'puma', '~> 3.11'
11
+ # Use SCSS for stylesheets
12
+ gem 'sass-rails', '~> 5.0'
13
+ # Use Uglifier as compressor for JavaScript assets
14
+ gem 'uglifier', '>= 1.3.0'
15
+ # See https://github.com/rails/execjs#readme for more supported runtimes
16
+ # gem 'mini_racer', platforms: :ruby
17
+
18
+ # Use CoffeeScript for .coffee assets and views
19
+ gem 'coffee-rails', '~> 4.2'
20
+ # Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks
21
+ gem 'turbolinks', '~> 5'
22
+ # Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
23
+ gem 'jbuilder', '~> 2.5'
24
+ # Use Redis adapter to run Action Cable in production
25
+ # gem 'redis', '~> 4.0'
26
+ # Use ActiveModel has_secure_password
27
+ # gem 'bcrypt', '~> 3.1.7'
28
+
29
+ # Use ActiveStorage variant
30
+ # gem 'mini_magick', '~> 4.8'
31
+
32
+ # Use Capistrano for deployment
33
+ # gem 'capistrano-rails', group: :development
34
+
35
+ # Reduces boot times through caching; required in config/boot.rb
36
+ gem 'bootsnap', '>= 1.1.0', require: false
37
+
38
+ group :development, :test do
39
+ # Call 'byebug' anywhere in the code to stop execution and get a debugger console
40
+ gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
41
+ end
42
+
43
+ group :development do
44
+ # Access an interactive console on exception pages or by calling 'console' anywhere in the code.
45
+ gem 'web-console', '>= 3.3.0'
46
+ gem 'listen', '>= 3.0.5', '< 3.2'
47
+ # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
48
+ gem 'spring'
49
+ gem 'spring-watcher-listen', '~> 2.0.0'
50
+ end
51
+
52
+ group :test do
53
+ # Adds support for Capybara system testing and selenium driver
54
+ gem 'capybara', '>= 2.15'
55
+ gem 'selenium-webdriver'
56
+ # Easy installation and use of chromedriver to run system tests with Chrome
57
+ gem 'chromedriver-helper'
58
+ end
59
+
60
+ # Windows does not include zoneinfo files, so bundle the tzinfo-data gem
61
+ gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
@@ -0,0 +1,24 @@
1
+ # README
2
+
3
+ This README would normally document whatever steps are necessary to get the
4
+ application up and running.
5
+
6
+ Things you may want to cover:
7
+
8
+ * Ruby version
9
+
10
+ * System dependencies
11
+
12
+ * Configuration
13
+
14
+ * Database creation
15
+
16
+ * Database initialization
17
+
18
+ * How to run the test suite
19
+
20
+ * Services (job queues, cache servers, search engines, etc.)
21
+
22
+ * Deployment instructions
23
+
24
+ * ...
@@ -0,0 +1,6 @@
1
+ # Add your own tasks in files placed in lib/tasks ending in .rake,
2
+ # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
3
+
4
+ require_relative 'config/application'
5
+
6
+ Rails.application.load_tasks