roro 0.1.0 → 0.1.1

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 (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