ruby_yacht 0.4.2 → 0.4.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7ad849de99b81055226aa81f2958813df81795b9
4
- data.tar.gz: a29a356d8cc8c63727f3b5ef90665b7d4f4394eb
3
+ metadata.gz: f958d7dd279688e4f761cfabde4f10696fea04f1
4
+ data.tar.gz: 921dfd094b9fdea99292b7daf03abb92c3f47415
5
5
  SHA512:
6
- metadata.gz: 45665a1e24640f5d2d2d4a391ce3dc9e23c4ced4fc93f0fc96dae1d3979ad481e08c47cf6ba461e93c24ce742eeb4e1e0aa464367110c1d1401a76de72ac6311
7
- data.tar.gz: ea27fca3dbb8afabe51d2b3d1a77b3d3c567259faa53aaf09d0f5959aa03a59a13d750cc32349f994e771ae0ad477bd8d36314a9eeb5a02f81900eaee806afe1
6
+ metadata.gz: 6dd1410db4ef7cda53b1d5029102176c49e259896cde6cc68f882d65a03f02404382a667aa6551eedc829540fa89be75c59845d50e401e680fdf703df31cbe2a
7
+ data.tar.gz: 529f3f2489158df1ec5e535955286fb4fbad23f310e67cb2ea86ed3fd783a98f442f490e8221eba69004e5f9d8123d6698d81a83d90c4be7914703289f8f4ebd
data/.rubocop.yml CHANGED
@@ -224,12 +224,6 @@ Metrics/ClassLength:
224
224
  Enabled: true
225
225
  Max: 250
226
226
 
227
- Metrics/CyclomaticComplexity:
228
- Description: >-
229
- A complexity metric that is strongly correlated to the number
230
- of test cases needed to validate a method.
231
- Enabled: true
232
-
233
227
  Metrics/LineLength:
234
228
  Description: 'Limit lines to 80 characters.'
235
229
  StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#80-character-limits'
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ruby_yacht (0.4.1)
4
+ ruby_yacht (0.4.3)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/doc/TODO.md CHANGED
@@ -12,6 +12,7 @@ for open tickets.
12
12
  # Plugins
13
13
 
14
14
  * Better support for rails apps with no database
15
+ * Configurable ports for database servers
15
16
 
16
17
  # More customization
17
18
 
@@ -10,7 +10,8 @@ ENV DATABASE_TYPE <%= @database.server_type %>
10
10
  <% end %>
11
11
 
12
12
  COPY checkout.bash /var/docker/checkout.bash
13
- <%= copy_hooks [:install_libraries, :create_databases] %>
13
+ COPY startup.bash /var/docker/startup.bash
14
+ <%= copy_hooks [:install_libraries, :create_databases, :startup] %>
14
15
  <% with_each_app_type do %>
15
16
  <%= copy_hooks [:load_database_seeds] %>
16
17
  <% end %>
@@ -21,6 +22,7 @@ RUN chmod u+x /var/docker/*
21
22
 
22
23
  <%= include_event :create_databases %>
23
24
 
25
+ <% original_server_type = @server_type %>
24
26
  <% apps = @project.apps.select { |app| app.database_name == @database.name } %>
25
27
  <% apps.each do |app| %>
26
28
  <% @server_type = RubyYacht.configuration.find_server_type(app.server_type) %>
@@ -30,8 +32,10 @@ WORKDIR /var/code/<%= app.name %>
30
32
  <%= include_event :load_database_seeds %>
31
33
  <% end %>
32
34
 
33
- RUN rm -r /var/docker
35
+ <% @server_type = original_server_type %>
36
+
34
37
  RUN rm -r /var/code
38
+ WORKDIR /
35
39
 
36
40
  ENV DATABASE_USERNAME ''
37
41
  ENV DATABASE_PASSWORD ''
@@ -39,4 +43,4 @@ ENV DATABASE_NAME ''
39
43
 
40
44
  EXPOSE 3306
41
45
 
42
- CMD mysqld_safe --bind-address=0.0.0.0
46
+ CMD /var/docker/startup.bash
@@ -0,0 +1,3 @@
1
+ #! /bin/bash
2
+
3
+ <%= include_event :startup, [:before, :during], in_bash: true %>
@@ -18,6 +18,7 @@ module RubyYacht::Plugins
18
18
  add_hooks(server_type: :mysql, folder: File.join(File.dirname(__FILE__), 'mysql', 'scripts')) do
19
19
  during(:install_libraries) { command 'apt-get install -y mysql-server' }
20
20
  during(:create_databases) { run_script 'setup.bash' }
21
+ during(:startup) { command 'mysqld_safe --bind-address=0.0.0.0' }
21
22
  end
22
23
  end
23
24
  end
@@ -31,8 +31,8 @@ module RubyYacht::Runner
31
31
  build_image 'app-dependencies', "#{@project.system_prefix}-#{@server_type.name}-app-dependencies"
32
32
  end
33
33
 
34
+ @app_server_type = RubyYacht.configuration.find_server_type(project.apps.first.server_type)
34
35
  project.databases.select(&:local?).each do |database|
35
- @app_server_type = @server_type
36
36
  @database = database
37
37
  @server_type = RubyYacht.configuration.find_server_type(@database.server_type)
38
38
  build_image 'database', @database.container_name(@project)
@@ -107,8 +107,8 @@ module RubyYacht::Runner
107
107
 
108
108
  # This method establishes settings for building an image.
109
109
  #
110
- # This will set the `@templates`, `@hook_events`, and `@server_types` instance
111
- # variables.
110
+ # This will set the `@templates`, `@hook_events`, and `@server_types`
111
+ # instance variables.
112
112
  #
113
113
  # ### Parameters
114
114
  #
@@ -118,6 +118,7 @@ module RubyYacht::Runner
118
118
  @templates =
119
119
  case folder_name
120
120
  when 'app' then ['Dockerfile', 'before_startup.bash', 'startup.bash']
121
+ when 'database' then ['Dockerfile', 'startup.bash']
121
122
  else ['Dockerfile']
122
123
  end
123
124
 
data/ruby_yacht.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |spec|
2
2
  spec.name = 'ruby_yacht'
3
- spec.version = '0.4.2'
3
+ spec.version = '0.4.3'
4
4
  spec.date = '2016-04-27'
5
5
  spec.description = "A DSL for building docker containers for a family of Rails apps"
6
6
  spec.summary = "A DSL for building docker containers for a family of Rails apps"
@@ -1,4 +1,4 @@
1
- FROM apollo-debian-app-dependencies
1
+ FROM apollo-generic-app-dependencies
2
2
 
3
3
  ENV DATABASE_USERNAME apollo
4
4
  ENV DATABASE_PASSWORD test
@@ -6,14 +6,15 @@ ENV DATABASE_NAME apollo
6
6
  ENV DATABASE_TYPE sqlite
7
7
 
8
8
  COPY checkout.bash /var/docker/checkout.bash
9
+ COPY startup.bash /var/docker/startup.bash
9
10
 
10
11
  RUN chmod u+x /var/docker/*
11
12
 
12
13
  RUN /var/docker/checkout.bash github.com mars brownleej/mars
13
14
  WORKDIR /var/code/mars
14
15
 
15
- RUN rm -r /var/docker
16
16
  RUN rm -r /var/code
17
+ WORKDIR /
17
18
 
18
19
  ENV DATABASE_USERNAME ''
19
20
  ENV DATABASE_PASSWORD ''
@@ -21,4 +22,4 @@ ENV DATABASE_NAME ''
21
22
 
22
23
  EXPOSE 3306
23
24
 
24
- CMD mysqld_safe --bind-address=0.0.0.0
25
+ CMD /var/docker/startup.bash
@@ -7,6 +7,7 @@ ENV DATABASE_TYPE mysql
7
7
  ENV DEBIAN_FRONTEND noninteractive
8
8
 
9
9
  COPY checkout.bash /var/docker/checkout.bash
10
+ COPY startup.bash /var/docker/startup.bash
10
11
  COPY setup.bash /var/docker/setup.bash
11
12
 
12
13
  RUN chmod u+x /var/docker/*
@@ -18,8 +19,8 @@ RUN /var/docker/setup.bash
18
19
  RUN /var/docker/checkout.bash github.com mars brownleej/mars
19
20
  WORKDIR /var/code/mars
20
21
 
21
- RUN rm -r /var/docker
22
22
  RUN rm -r /var/code
23
+ WORKDIR /
23
24
 
24
25
  ENV DATABASE_USERNAME ''
25
26
  ENV DATABASE_PASSWORD ''
@@ -27,4 +28,4 @@ ENV DATABASE_NAME ''
27
28
 
28
29
  EXPOSE 3306
29
30
 
30
- CMD mysqld_safe --bind-address=0.0.0.0
31
+ CMD /var/docker/startup.bash
@@ -6,6 +6,7 @@ ENV DATABASE_NAME apollo
6
6
  ENV DATABASE_TYPE sqlite
7
7
 
8
8
  COPY checkout.bash /var/docker/checkout.bash
9
+ COPY startup.bash /var/docker/startup.bash
9
10
  COPY load_seeds.rb /var/docker/load_seeds.rb
10
11
 
11
12
  RUN chmod u+x /var/docker/*
@@ -18,8 +19,8 @@ RUN /var/docker/checkout.bash github.com saturn brownleej/saturn
18
19
  WORKDIR /var/code/saturn
19
20
  RUN /var/docker/load_seeds.rb
20
21
 
21
- RUN rm -r /var/docker
22
22
  RUN rm -r /var/code
23
+ WORKDIR /
23
24
 
24
25
  ENV DATABASE_USERNAME ''
25
26
  ENV DATABASE_PASSWORD ''
@@ -27,4 +28,4 @@ ENV DATABASE_NAME ''
27
28
 
28
29
  EXPOSE 3306
29
30
 
30
- CMD mysqld_safe --bind-address=0.0.0.0
31
+ CMD /var/docker/startup.bash
@@ -1,4 +1,4 @@
1
- FROM apollo-debian-app-dependencies
1
+ FROM apollo-generic-app-dependencies
2
2
 
3
3
  ENV DATABASE_USERNAME apollo
4
4
  ENV DATABASE_PASSWORD test
@@ -6,6 +6,7 @@ ENV DATABASE_NAME apollo
6
6
  ENV DATABASE_TYPE sqlite
7
7
 
8
8
  COPY checkout.bash /var/docker/checkout.bash
9
+ COPY startup.bash /var/docker/startup.bash
9
10
  COPY hook1.rb /var/docker/hook1.rb
10
11
 
11
12
  RUN chmod u+x /var/docker/*
@@ -14,8 +15,8 @@ RUN /var/docker/checkout.bash github.com mars brownleej/mars
14
15
  WORKDIR /var/code/mars
15
16
  RUN /var/docker/hook1.rb
16
17
 
17
- RUN rm -r /var/docker
18
18
  RUN rm -r /var/code
19
+ WORKDIR /
19
20
 
20
21
  ENV DATABASE_USERNAME ''
21
22
  ENV DATABASE_PASSWORD ''
@@ -23,4 +24,4 @@ ENV DATABASE_NAME ''
23
24
 
24
25
  EXPOSE 3306
25
26
 
26
- CMD mysqld_safe --bind-address=0.0.0.0
27
+ CMD /var/docker/startup.bash
@@ -0,0 +1,3 @@
1
+ #! /bin/bash
2
+
3
+ mysqld_safe --bind-address=0.0.0.0;
@@ -48,10 +48,11 @@ describe RubyYacht::Plugins::MySQL do
48
48
  it "copies the scripts to the docker folder" do
49
49
  docker.expect("build -t apollo-database tmp") do
50
50
  files = Dir[File.join("tmp", "*")].sort
51
- expect(files).to eq ['tmp/Dockerfile', 'tmp/Dockerfile.erb', 'tmp/checkout.bash', 'tmp/setup.bash']
51
+ expect(files).to eq ['tmp/Dockerfile', 'tmp/Dockerfile.erb', 'tmp/checkout.bash', 'tmp/setup.bash', 'tmp/startup.bash', 'tmp/startup.bash.erb']
52
52
  end
53
53
  subject.run
54
54
  end
55
+
55
56
  it "builds the dockerfile for a MySQL database" do
56
57
  docker.expect("build -t apollo-database tmp") do
57
58
  dockerfile = File.read(File.join('tmp', 'Dockerfile'))
@@ -60,5 +61,14 @@ describe RubyYacht::Plugins::MySQL do
60
61
  end
61
62
  subject.run
62
63
  end
64
+
65
+ it "builds the startup script for a MySQL database" do
66
+ docker.expect("build -t apollo-database tmp") do
67
+ startup_file = File.read(File.join('tmp', 'startup.bash'))
68
+ expected = File.read(File.join('spec', 'fixtures', 'database-startup-mysql'))
69
+ expect(startup_file).to eq expected
70
+ end
71
+ subject.run
72
+ end
63
73
  end
64
74
  end
@@ -246,7 +246,7 @@ describe RubyYacht::Plugins::Rails do
246
246
  it "generates the dockerfiles for the database server" do
247
247
  docker.expect "build -t apollo-database tmp" do
248
248
  files = Dir[File.join("tmp", "*")].sort
249
- expect(files).to eq ['tmp/Dockerfile', 'tmp/Dockerfile.erb', 'tmp/checkout.bash', 'tmp/install_gems.rb', 'tmp/load_seeds.rb']
249
+ expect(files).to eq ['tmp/Dockerfile', 'tmp/Dockerfile.erb', 'tmp/checkout.bash', 'tmp/install_gems.rb', 'tmp/load_seeds.rb', 'tmp/startup.bash', 'tmp/startup.bash.erb']
250
250
  dockerfile = File.read(File.join('tmp', 'Dockerfile'))
251
251
  expected = File.read(File.join('spec', 'fixtures', 'database-dockerfile-rails'))
252
252
  expect(dockerfile).to eq expected
@@ -109,7 +109,7 @@ describe RubyYacht::Runner::BuildImages do
109
109
  it "builds the database" do
110
110
  docker.expect("build -t apollo-mysql tmp") do
111
111
  files = Dir[File.join("tmp", "*")].sort
112
- expect(files).to eq ['tmp/Dockerfile', 'tmp/Dockerfile.erb', 'tmp/checkout.bash']
112
+ expect(files).to eq ['tmp/Dockerfile', 'tmp/Dockerfile.erb', 'tmp/checkout.bash', 'tmp/startup.bash', 'tmp/startup.bash.erb']
113
113
  dockerfile = File.read(File.join('tmp', 'Dockerfile'))
114
114
  expected = File.read(File.join('spec', 'fixtures', 'database-dockerfile'))
115
115
  expect(dockerfile).to eq expected
@@ -136,7 +136,7 @@ describe RubyYacht::Runner::BuildImages do
136
136
  it "copies the files for the hooks to the database" do
137
137
  docker.expect("build -t apollo-mysql tmp") do
138
138
  files = Dir[File.join("tmp", "*")].sort
139
- expect(files).to eq ['tmp/Dockerfile', 'tmp/Dockerfile.erb', 'tmp/checkout.bash', 'tmp/hook1.rb']
139
+ expect(files).to eq ['tmp/Dockerfile', 'tmp/Dockerfile.erb', 'tmp/checkout.bash', 'tmp/hook1.rb', 'tmp/startup.bash', 'tmp/startup.bash.erb']
140
140
  end
141
141
  subject.run
142
142
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_yacht
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.4.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Brownlee
@@ -88,6 +88,7 @@ files:
88
88
  - lib/ruby_yacht/images/app/startup.bash.erb
89
89
  - lib/ruby_yacht/images/database/Dockerfile.erb
90
90
  - lib/ruby_yacht/images/database/checkout.bash
91
+ - lib/ruby_yacht/images/database/startup.bash.erb
91
92
  - lib/ruby_yacht/images/web/Dockerfile.erb
92
93
  - lib/ruby_yacht/images/web/add_app.rb
93
94
  - lib/ruby_yacht/images/web/add_project.rb
@@ -132,6 +133,7 @@ files:
132
133
  - spec/fixtures/database-dockerfile-mysql
133
134
  - spec/fixtures/database-dockerfile-rails
134
135
  - spec/fixtures/database-dockerfile-with-seed-hooks
136
+ - spec/fixtures/database-startup-mysql
135
137
  - spec/fixtures/deploy-dockerfile
136
138
  - spec/fixtures/hooks/hook1.rb
137
139
  - spec/fixtures/hooks/hook2.rb
@@ -210,6 +212,7 @@ test_files:
210
212
  - spec/fixtures/database-dockerfile-mysql
211
213
  - spec/fixtures/database-dockerfile-rails
212
214
  - spec/fixtures/database-dockerfile-with-seed-hooks
215
+ - spec/fixtures/database-startup-mysql
213
216
  - spec/fixtures/deploy-dockerfile
214
217
  - spec/fixtures/hooks/hook1.rb
215
218
  - spec/fixtures/hooks/hook2.rb