ruby_yacht 0.1.1 → 0.2.0
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 +7 -0
- data/Gemfile.lock +1 -1
- data/doc/TODO.md +16 -6
- data/doc/configuration_sample.rb +8 -9
- data/lib/ruby_yacht/dsl/app.rb +29 -1
- data/lib/ruby_yacht/dsl/app_type.rb +112 -0
- data/lib/ruby_yacht/dsl/configuration.rb +163 -2
- data/lib/ruby_yacht/dsl/dsl.rb +51 -9
- data/lib/ruby_yacht/dsl/hook.rb +105 -0
- data/lib/ruby_yacht/dsl/project.rb +17 -21
- data/lib/ruby_yacht/dsl.rb +2 -0
- data/lib/ruby_yacht/images/app/Dockerfile.erb +20 -13
- data/lib/ruby_yacht/images/app/before_startup.bash.erb +8 -0
- data/lib/ruby_yacht/images/app/checkout.bash +6 -0
- data/lib/ruby_yacht/images/app/startup.bash.erb +5 -0
- data/lib/ruby_yacht/images/app-dependencies/Dockerfile.erb +23 -5
- data/lib/ruby_yacht/images/database/Dockerfile.erb +25 -11
- data/lib/ruby_yacht/images/database/checkout.bash +10 -0
- data/lib/ruby_yacht/images/database/setup.bash +15 -0
- data/lib/ruby_yacht/images/web/Dockerfile.erb +4 -3
- data/lib/ruby_yacht/plugins/rails/scripts/install_gems.rb +3 -0
- data/lib/ruby_yacht/plugins/rails/scripts/load_seeds.rb +34 -0
- data/lib/ruby_yacht/{images/app/startup.rb → plugins/rails/scripts/prepare_rails_for_launch.rb} +2 -8
- data/lib/ruby_yacht/{images/app/update_database_config.rb → plugins/rails/scripts/update_rails_config.rb} +0 -1
- data/lib/ruby_yacht/plugins/rails.rb +40 -0
- data/lib/ruby_yacht/plugins.rb +6 -0
- data/lib/ruby_yacht/runner/build_images.rb +72 -5
- data/lib/ruby_yacht/runner/checkout.rb +1 -1
- data/lib/ruby_yacht.rb +2 -1
- data/ruby_yacht.gemspec +2 -1
- data/spec/docker/Dockerfile +1 -1
- data/spec/dsl/app_spec.rb +34 -0
- data/spec/dsl/app_type_spec.rb +176 -0
- data/spec/dsl/configuration_spec.rb +161 -2
- data/spec/dsl/dsl_spec.rb +3 -3
- data/spec/dsl/hook_spec.rb +111 -0
- data/spec/dsl/project_spec.rb +19 -83
- data/spec/fixtures/app-dependencies-dockerfile-generic +21 -0
- data/spec/fixtures/app-dependencies-dockerfile-generic-with-library-install +28 -0
- data/spec/fixtures/app-dependencies-dockerfile-rails +32 -0
- data/spec/fixtures/database-dockerfile +16 -15
- data/spec/fixtures/database-dockerfile-rails +35 -0
- data/spec/fixtures/database-dockerfile-with-seed-hooks +34 -0
- data/spec/fixtures/hooks/hook1.rb +0 -0
- data/spec/fixtures/hooks/hook2.rb +0 -0
- data/spec/fixtures/mars-before-startup +4 -0
- data/spec/fixtures/mars-before-startup-rails +7 -0
- data/spec/fixtures/mars-before-startup-with-before-startup-hooks +7 -0
- data/spec/fixtures/mars-dockerfile +9 -14
- data/spec/fixtures/mars-dockerfile-rails +33 -0
- data/spec/fixtures/mars-dockerfile-with-after-checkout-hooks +30 -0
- data/spec/fixtures/mars-dockerfile-with-before-startup-hooks +29 -0
- data/spec/fixtures/mars-startup +3 -0
- data/spec/fixtures/mars-startup-rails +3 -0
- data/spec/fixtures/multi-project-web-dockerfile +0 -10
- data/spec/fixtures/web-dockerfile +0 -6
- data/spec/plugins/rails_spec.rb +198 -0
- data/spec/runner/build_images_spec.rb +181 -15
- data/spec/runner/checkout_spec.rb +2 -2
- data/spec/support/test_project.rb +16 -8
- metadata +62 -30
- data/lib/ruby_yacht/images/app/checkout.rb +0 -7
- data/lib/ruby_yacht/images/app-dependencies/install_gems.rb +0 -12
- data/lib/ruby_yacht/images/database/load_seeds.rb +0 -42
- data/lib/ruby_yacht/images/database/setup.rb +0 -19
- data/lib/ruby_yacht/images/database/setup_database.sql.erb +0 -12
- data/spec/fixtures/app-dependencies-dockerfile +0 -25
metadata
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby_yacht
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.2.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- John Brownlee
|
@@ -14,52 +13,46 @@ dependencies:
|
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: rspec
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - '>='
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - '>='
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '0'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: codeclimate-test-reporter
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - '>='
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '0'
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - '>='
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: '0'
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: timecop
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - '>='
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: '0'
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - '>='
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: '0'
|
62
|
-
description:
|
55
|
+
description: A DSL for building docker containers for a family of Rails apps
|
63
56
|
email: apps@mail.johnbrownlee.com
|
64
57
|
executables: []
|
65
58
|
extensions: []
|
@@ -81,21 +74,21 @@ files:
|
|
81
74
|
- lib/ruby_yacht.rb
|
82
75
|
- lib/ruby_yacht/dsl.rb
|
83
76
|
- lib/ruby_yacht/dsl/app.rb
|
77
|
+
- lib/ruby_yacht/dsl/app_type.rb
|
84
78
|
- lib/ruby_yacht/dsl/configuration.rb
|
85
79
|
- lib/ruby_yacht/dsl/database.rb
|
86
80
|
- lib/ruby_yacht/dsl/dns_server.rb
|
87
81
|
- lib/ruby_yacht/dsl/dsl.rb
|
82
|
+
- lib/ruby_yacht/dsl/hook.rb
|
88
83
|
- lib/ruby_yacht/dsl/project.rb
|
89
84
|
- lib/ruby_yacht/images/app-dependencies/Dockerfile.erb
|
90
|
-
- lib/ruby_yacht/images/app-dependencies/install_gems.rb
|
91
85
|
- lib/ruby_yacht/images/app/Dockerfile.erb
|
92
|
-
- lib/ruby_yacht/images/app/
|
93
|
-
- lib/ruby_yacht/images/app/
|
94
|
-
- lib/ruby_yacht/images/app/
|
86
|
+
- lib/ruby_yacht/images/app/before_startup.bash.erb
|
87
|
+
- lib/ruby_yacht/images/app/checkout.bash
|
88
|
+
- lib/ruby_yacht/images/app/startup.bash.erb
|
95
89
|
- lib/ruby_yacht/images/database/Dockerfile.erb
|
96
|
-
- lib/ruby_yacht/images/database/
|
97
|
-
- lib/ruby_yacht/images/database/setup.
|
98
|
-
- lib/ruby_yacht/images/database/setup_database.sql.erb
|
90
|
+
- lib/ruby_yacht/images/database/checkout.bash
|
91
|
+
- lib/ruby_yacht/images/database/setup.bash
|
99
92
|
- lib/ruby_yacht/images/deploy/Dockerfile.erb
|
100
93
|
- lib/ruby_yacht/images/web/Dockerfile.erb
|
101
94
|
- lib/ruby_yacht/images/web/add_app.rb
|
@@ -104,6 +97,12 @@ files:
|
|
104
97
|
- lib/ruby_yacht/images/web/index.html.erb
|
105
98
|
- lib/ruby_yacht/images/web/index_config.erb
|
106
99
|
- lib/ruby_yacht/images/web/setup.rb
|
100
|
+
- lib/ruby_yacht/plugins.rb
|
101
|
+
- lib/ruby_yacht/plugins/rails.rb
|
102
|
+
- lib/ruby_yacht/plugins/rails/scripts/install_gems.rb
|
103
|
+
- lib/ruby_yacht/plugins/rails/scripts/load_seeds.rb
|
104
|
+
- lib/ruby_yacht/plugins/rails/scripts/prepare_rails_for_launch.rb
|
105
|
+
- lib/ruby_yacht/plugins/rails/scripts/update_rails_config.rb
|
107
106
|
- lib/ruby_yacht/runner.rb
|
108
107
|
- lib/ruby_yacht/runner/build.rb
|
109
108
|
- lib/ruby_yacht/runner/build_images.rb
|
@@ -120,17 +119,34 @@ files:
|
|
120
119
|
- spec/docker/Dockerfile
|
121
120
|
- spec/docker/build.bash
|
122
121
|
- spec/dsl/app_spec.rb
|
122
|
+
- spec/dsl/app_type_spec.rb
|
123
123
|
- spec/dsl/configuration_spec.rb
|
124
124
|
- spec/dsl/database_spec.rb
|
125
125
|
- spec/dsl/dns_server_spec.rb
|
126
126
|
- spec/dsl/dsl_spec.rb
|
127
|
+
- spec/dsl/hook_spec.rb
|
127
128
|
- spec/dsl/project_spec.rb
|
128
|
-
- spec/fixtures/app-dependencies-dockerfile
|
129
|
+
- spec/fixtures/app-dependencies-dockerfile-generic
|
130
|
+
- spec/fixtures/app-dependencies-dockerfile-generic-with-library-install
|
131
|
+
- spec/fixtures/app-dependencies-dockerfile-rails
|
129
132
|
- spec/fixtures/database-dockerfile
|
133
|
+
- spec/fixtures/database-dockerfile-rails
|
134
|
+
- spec/fixtures/database-dockerfile-with-seed-hooks
|
130
135
|
- spec/fixtures/deploy-dockerfile
|
136
|
+
- spec/fixtures/hooks/hook1.rb
|
137
|
+
- spec/fixtures/hooks/hook2.rb
|
138
|
+
- spec/fixtures/mars-before-startup
|
139
|
+
- spec/fixtures/mars-before-startup-rails
|
140
|
+
- spec/fixtures/mars-before-startup-with-before-startup-hooks
|
131
141
|
- spec/fixtures/mars-dockerfile
|
142
|
+
- spec/fixtures/mars-dockerfile-rails
|
143
|
+
- spec/fixtures/mars-dockerfile-with-after-checkout-hooks
|
144
|
+
- spec/fixtures/mars-dockerfile-with-before-startup-hooks
|
145
|
+
- spec/fixtures/mars-startup
|
146
|
+
- spec/fixtures/mars-startup-rails
|
132
147
|
- spec/fixtures/multi-project-web-dockerfile
|
133
148
|
- spec/fixtures/web-dockerfile
|
149
|
+
- spec/plugins/rails_spec.rb
|
134
150
|
- spec/runner/build_images_spec.rb
|
135
151
|
- spec/runner/build_spec.rb
|
136
152
|
- spec/runner/checkout_spec.rb
|
@@ -148,43 +164,59 @@ files:
|
|
148
164
|
homepage: https://github.com/brownleej/ruby-yacht
|
149
165
|
licenses:
|
150
166
|
- MIT
|
167
|
+
metadata: {}
|
151
168
|
post_install_message:
|
152
169
|
rdoc_options: []
|
153
170
|
require_paths:
|
154
171
|
- lib
|
155
172
|
required_ruby_version: !ruby/object:Gem::Requirement
|
156
|
-
none: false
|
157
173
|
requirements:
|
158
|
-
- -
|
174
|
+
- - '>='
|
159
175
|
- !ruby/object:Gem::Version
|
160
176
|
version: '0'
|
161
177
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
162
|
-
none: false
|
163
178
|
requirements:
|
164
|
-
- -
|
179
|
+
- - '>='
|
165
180
|
- !ruby/object:Gem::Version
|
166
181
|
version: '0'
|
167
182
|
requirements: []
|
168
183
|
rubyforge_project:
|
169
|
-
rubygems_version:
|
184
|
+
rubygems_version: 2.0.14.1
|
170
185
|
signing_key:
|
171
|
-
specification_version:
|
186
|
+
specification_version: 4
|
172
187
|
summary: A DSL for building docker containers for a family of Rails apps
|
173
188
|
test_files:
|
174
189
|
- spec/docker/Dockerfile
|
175
190
|
- spec/docker/build.bash
|
176
191
|
- spec/dsl/app_spec.rb
|
192
|
+
- spec/dsl/app_type_spec.rb
|
177
193
|
- spec/dsl/configuration_spec.rb
|
178
194
|
- spec/dsl/database_spec.rb
|
179
195
|
- spec/dsl/dns_server_spec.rb
|
180
196
|
- spec/dsl/dsl_spec.rb
|
197
|
+
- spec/dsl/hook_spec.rb
|
181
198
|
- spec/dsl/project_spec.rb
|
182
|
-
- spec/fixtures/app-dependencies-dockerfile
|
199
|
+
- spec/fixtures/app-dependencies-dockerfile-generic
|
200
|
+
- spec/fixtures/app-dependencies-dockerfile-generic-with-library-install
|
201
|
+
- spec/fixtures/app-dependencies-dockerfile-rails
|
183
202
|
- spec/fixtures/database-dockerfile
|
203
|
+
- spec/fixtures/database-dockerfile-rails
|
204
|
+
- spec/fixtures/database-dockerfile-with-seed-hooks
|
184
205
|
- spec/fixtures/deploy-dockerfile
|
206
|
+
- spec/fixtures/hooks/hook1.rb
|
207
|
+
- spec/fixtures/hooks/hook2.rb
|
208
|
+
- spec/fixtures/mars-before-startup
|
209
|
+
- spec/fixtures/mars-before-startup-rails
|
210
|
+
- spec/fixtures/mars-before-startup-with-before-startup-hooks
|
185
211
|
- spec/fixtures/mars-dockerfile
|
212
|
+
- spec/fixtures/mars-dockerfile-rails
|
213
|
+
- spec/fixtures/mars-dockerfile-with-after-checkout-hooks
|
214
|
+
- spec/fixtures/mars-dockerfile-with-before-startup-hooks
|
215
|
+
- spec/fixtures/mars-startup
|
216
|
+
- spec/fixtures/mars-startup-rails
|
186
217
|
- spec/fixtures/multi-project-web-dockerfile
|
187
218
|
- spec/fixtures/web-dockerfile
|
219
|
+
- spec/plugins/rails_spec.rb
|
188
220
|
- spec/runner/build_images_spec.rb
|
189
221
|
- spec/runner/build_spec.rb
|
190
222
|
- spec/runner/checkout_spec.rb
|
@@ -1,12 +0,0 @@
|
|
1
|
-
#! /usr/local/bin/ruby
|
2
|
-
|
3
|
-
require 'yaml'
|
4
|
-
|
5
|
-
app_name = ARGV.shift
|
6
|
-
repository_host = ARGV.shift
|
7
|
-
repository_name = ARGV.shift
|
8
|
-
|
9
|
-
puts "Installing gems for #{app_name}"
|
10
|
-
system "mkdir -p /var/code"
|
11
|
-
system "git clone git@#{repository_host}:#{repository_name} /var/code/#{app_name}"
|
12
|
-
system "cd /var/code/#{app_name} && bundle install"
|
@@ -1,42 +0,0 @@
|
|
1
|
-
#! /usr/local/bin/ruby
|
2
|
-
|
3
|
-
require 'yaml'
|
4
|
-
require 'fileutils'
|
5
|
-
|
6
|
-
puts "Loading seeds"
|
7
|
-
|
8
|
-
app_name = ARGV.shift
|
9
|
-
name = ARGV.shift
|
10
|
-
username = ARGV.shift
|
11
|
-
password = ARGV.shift
|
12
|
-
initialized_database = (ARGV.shift == 'true')
|
13
|
-
|
14
|
-
puts "Creating #{name} database"
|
15
|
-
system "service mysql start"
|
16
|
-
|
17
|
-
directory = "/var/code/#{app_name}"
|
18
|
-
config_path = "#{directory}/config/database.yml"
|
19
|
-
|
20
|
-
FileUtils.cd directory
|
21
|
-
database_config = {
|
22
|
-
'development' => {
|
23
|
-
'adapter' => 'mysql2',
|
24
|
-
'encoding' => 'utf8',
|
25
|
-
'reconnect' => true,
|
26
|
-
'username' => username,
|
27
|
-
'password' => password,
|
28
|
-
'host' => 'localhost',
|
29
|
-
'database' => name
|
30
|
-
}
|
31
|
-
}
|
32
|
-
|
33
|
-
File.open(config_path, "w") do |file|
|
34
|
-
file.write(database_config.to_yaml)
|
35
|
-
end
|
36
|
-
|
37
|
-
if initialized_database
|
38
|
-
rake_command = "bundle exec rake db:migrate; bundle exec rake db:seed"
|
39
|
-
else
|
40
|
-
rake_command = "bundle exec rake db:reset"
|
41
|
-
end
|
42
|
-
system "bundle install; #{rake_command}"
|
@@ -1,19 +0,0 @@
|
|
1
|
-
#! /usr/local/bin/ruby
|
2
|
-
|
3
|
-
require 'erb'
|
4
|
-
require 'yaml'
|
5
|
-
|
6
|
-
@database_name = ARGV.shift
|
7
|
-
@database_user = ARGV.shift
|
8
|
-
@database_password = ARGV.shift
|
9
|
-
@rails_environment = ARGV.shift
|
10
|
-
|
11
|
-
system "service mysql start"
|
12
|
-
system "mysql -uroot -e \"CREATE USER '#{@database_user}'@'localhost' IDENTIFIED BY '#{@database_password}'\""
|
13
|
-
system "mysql -uroot -e \"CREATE USER '#{@database_user}'@'%' IDENTIFIED BY '#{@database_password}'\""
|
14
|
-
|
15
|
-
template = ERB.new(File.read('/var/docker/setup_database.sql.erb'))
|
16
|
-
File.open('/var/docker/create_database.sql', 'w') do |file|
|
17
|
-
file.write(template.result(binding))
|
18
|
-
end
|
19
|
-
system "mysql -uroot < /var/docker/create_database.sql"
|
@@ -1,12 +0,0 @@
|
|
1
|
-
<%
|
2
|
-
if @rails_environment == 'development'
|
3
|
-
database_names = %w(_development _test).map { |suffix| @database_name + suffix }
|
4
|
-
else
|
5
|
-
database_names = [@database_name]
|
6
|
-
end
|
7
|
-
%>
|
8
|
-
<% database_names.each do |database_name| %>
|
9
|
-
GRANT ALL ON <%= database_name %>.* to '<%= @database_user %>'@'localhost';
|
10
|
-
GRANT ALL ON <%= database_name %>.* to '<%= @database_user %>'@'%';
|
11
|
-
CREATE DATABASE <%= database_name %>;
|
12
|
-
<% end %>
|
@@ -1,25 +0,0 @@
|
|
1
|
-
# This Dockerfile creates an image for installing all of the gem dependencies
|
2
|
-
# for all of the apps.
|
3
|
-
#
|
4
|
-
# This is a slow process, so this should be kept as simple as possible so that
|
5
|
-
# it can remain unchanged.
|
6
|
-
|
7
|
-
FROM ruby:2.3
|
8
|
-
|
9
|
-
RUN mkdir -p /root/.ssh
|
10
|
-
COPY id_rsa /root/.ssh
|
11
|
-
RUN ssh-keyscan github.com >> /root/.ssh/known_hosts
|
12
|
-
|
13
|
-
RUN mkdir -p /var/docker/
|
14
|
-
COPY install_gems.rb /var/docker/install_gems.rb
|
15
|
-
|
16
|
-
|
17
|
-
RUN ruby /var/docker/install_gems.rb mars github.com brownleej/mars
|
18
|
-
|
19
|
-
RUN ruby /var/docker/install_gems.rb saturn github.com brownleej/saturn
|
20
|
-
|
21
|
-
|
22
|
-
RUN rm /var/docker/install_gems.rb
|
23
|
-
|
24
|
-
RUN apt-get update && apt-get upgrade -y
|
25
|
-
RUN apt-get install -y mysql-client
|