ruby_yacht 0.3.0 → 0.4.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.
Files changed (64) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +1 -1
  3. data/doc/TODO.md +1 -8
  4. data/lib/ruby_yacht/dsl/app.rb +37 -10
  5. data/lib/ruby_yacht/dsl/configuration.rb +21 -21
  6. data/lib/ruby_yacht/dsl/database.rb +53 -0
  7. data/lib/ruby_yacht/dsl/dsl.rb +14 -8
  8. data/lib/ruby_yacht/dsl/hook.rb +35 -15
  9. data/lib/ruby_yacht/dsl/project.rb +23 -10
  10. data/lib/ruby_yacht/dsl/{app_type.rb → server_type.rb} +39 -29
  11. data/lib/ruby_yacht/dsl.rb +1 -1
  12. data/lib/ruby_yacht/images/app/Dockerfile.erb +9 -5
  13. data/lib/ruby_yacht/images/app-dependencies/Dockerfile.erb +2 -2
  14. data/lib/ruby_yacht/images/database/Dockerfile.erb +12 -11
  15. data/lib/ruby_yacht/images/web/Dockerfile.erb +6 -2
  16. data/lib/ruby_yacht/images/web/add_app.rb +7 -1
  17. data/lib/ruby_yacht/images/web/app_config.erb +2 -0
  18. data/lib/ruby_yacht/plugins/mysql/scripts/setup.bash +11 -0
  19. data/lib/ruby_yacht/plugins/mysql.rb +27 -0
  20. data/lib/ruby_yacht/plugins/rails/scripts/install_gems.rb +6 -1
  21. data/lib/ruby_yacht/plugins/rails/scripts/load_seeds.rb +6 -4
  22. data/lib/ruby_yacht/plugins/rails/scripts/prepare_rails_for_launch.rb +1 -0
  23. data/lib/ruby_yacht/plugins/rails/scripts/update_rails_config.rb +1 -5
  24. data/lib/ruby_yacht/plugins/rails.rb +12 -4
  25. data/lib/ruby_yacht/plugins.rb +2 -1
  26. data/lib/ruby_yacht/runner/build_images.rb +32 -26
  27. data/lib/ruby_yacht/runner/checkout.rb +5 -4
  28. data/lib/ruby_yacht/runner/run_containers.rb +7 -6
  29. data/lib/ruby_yacht/runner/services.rb +2 -2
  30. data/lib/ruby_yacht/runner/shell.rb +5 -4
  31. data/lib/ruby_yacht/runner/update_hosts.rb +2 -1
  32. data/ruby_yacht.gemspec +1 -1
  33. data/spec/dsl/app_spec.rb +96 -10
  34. data/spec/dsl/configuration_spec.rb +53 -55
  35. data/spec/dsl/database_spec.rb +70 -12
  36. data/spec/dsl/hook_spec.rb +36 -19
  37. data/spec/dsl/project_spec.rb +26 -18
  38. data/spec/dsl/{app_type_spec.rb → server_type_spec.rb} +52 -28
  39. data/spec/fixtures/app-dependencies-dockerfile-rails +3 -0
  40. data/spec/fixtures/database-dockerfile +1 -8
  41. data/spec/fixtures/database-dockerfile-mysql +30 -0
  42. data/spec/fixtures/database-dockerfile-rails +1 -5
  43. data/spec/fixtures/database-dockerfile-with-seed-hooks +1 -8
  44. data/spec/fixtures/mars-before-startup-with-custom-file-copy +6 -0
  45. data/spec/fixtures/mars-dockerfile +0 -4
  46. data/spec/fixtures/mars-dockerfile-rails +2 -2
  47. data/spec/fixtures/mars-dockerfile-with-after-checkout-hooks +0 -4
  48. data/spec/fixtures/mars-dockerfile-with-before-startup-hooks +0 -4
  49. data/spec/fixtures/mars-dockerfile-with-custom-file-copy +23 -0
  50. data/spec/fixtures/mars-dockerfile-with-local-database +27 -0
  51. data/spec/fixtures/mars-dockerfile-with-remote-database +27 -0
  52. data/spec/fixtures/web-dockerfile-with-eponymous-app +20 -0
  53. data/spec/plugins/mysql_spec.rb +64 -0
  54. data/spec/plugins/rails_spec.rb +103 -43
  55. data/spec/runner/build_images_spec.rb +142 -11
  56. data/spec/runner/checkout_spec.rb +4 -4
  57. data/spec/runner/run_containers_spec.rb +21 -2
  58. data/spec/runner/runner_spec.rb +1 -1
  59. data/spec/runner/services_spec.rb +7 -2
  60. data/spec/runner/shell_spec.rb +3 -3
  61. data/spec/runner/update_hosts_spec.rb +26 -0
  62. data/spec/support/test_project.rb +16 -20
  63. metadata +20 -5
  64. data/lib/ruby_yacht/images/database/setup.bash +0 -15
@@ -32,7 +32,7 @@ describe RubyYacht::Runner::Shell do
32
32
  describe "parse_positional_arguments" do
33
33
  it "takes the app from the command line" do
34
34
  subject.parse_positional_arguments(["venus", "rails", "c"])
35
- expect(subject.app).to eq "venus"
35
+ expect(subject.app_name).to eq "venus"
36
36
  end
37
37
 
38
38
  it "takes the command from the command line" do
@@ -49,7 +49,7 @@ describe RubyYacht::Runner::Shell do
49
49
 
50
50
  describe "run behavior" do
51
51
  before do
52
- subject.app = 'saturn'
52
+ subject.app_name = 'saturn'
53
53
  subject.command = 'rails c'
54
54
  RubyYacht.configure_second_test_project
55
55
  allow(subject).to receive :exec
@@ -72,7 +72,7 @@ describe RubyYacht::Runner::Shell do
72
72
 
73
73
  context "with no app" do
74
74
  before do
75
- subject.app = nil
75
+ subject.app_name = nil
76
76
  end
77
77
 
78
78
  it "logs an error" do
@@ -159,5 +159,31 @@ describe RubyYacht::Runner::UpdateHosts do
159
159
  EOS
160
160
  end
161
161
  end
162
+
163
+ context "with an app with the same name as the project" do
164
+ before do
165
+ RubyYacht.configuration.projects.first.apps.first.name = :apollo
166
+ end
167
+
168
+ it "adds the entries to the hosts file in the tmp folder" do
169
+ subject.run
170
+ expect(File.exist?(File.join('tmp', 'hosts'))).to be_truthy
171
+
172
+ contents = File.read(File.join('tmp', 'hosts'))
173
+ expect(contents).to eq <<-EOS.gsub(/^ +/, '').strip
174
+ # Local information
175
+ 127.0.0.1 localhost
176
+
177
+ # Database server
178
+
179
+ 40.1.30.10 db1.test.com
180
+
181
+ # apollo docker containers
182
+ 192.168.1.27 apollo.test.com
183
+ 192.168.1.27 saturn.apollo.test.com
184
+ EOS
185
+
186
+ end
187
+ end
162
188
  end
163
189
  end
@@ -1,31 +1,34 @@
1
1
  module RubyYacht
2
- def self.configure_test_project
3
- RubyYacht.configuration.clear
2
+ def self.configure_server_types
4
3
  RubyYacht.configure do
5
- app_type(:generic) { baseline_image 'ubuntu' }
6
- app_type(:debian) { baseline_image 'debian' }
4
+ server_type :generic do
5
+ container_type :app
6
+ baseline_image 'ubuntu'
7
+ end
8
+
9
+ server_type :debian do
10
+ container_type :app
11
+ baseline_image 'debian'
12
+ end
7
13
  end
8
14
 
9
15
  RubyYacht.configure do
10
16
  during :startup do
11
- app_type :generic
17
+ server_type :generic
12
18
  command '/var/docker/start_app.bash'
13
19
  end
14
20
  end
15
-
21
+ end
22
+
23
+ def self.configure_test_project
24
+ RubyYacht.configuration.clear
25
+ self.configure_server_types
16
26
  RubyYacht.configure do
17
27
  project :apollo do
18
28
  system_prefix :apollo
19
29
  domain "apollo.test.com"
20
30
  repository "github.com"
21
31
 
22
- database do
23
- host "db.test.com"
24
- name "apollo"
25
- username "apollo"
26
- password "test"
27
- end
28
-
29
32
  generic_app :mars do
30
33
  repository_name 'brownleej/mars'
31
34
  end
@@ -44,13 +47,6 @@ module RubyYacht
44
47
  domain "jupiter.test.com"
45
48
  repository "github.com"
46
49
 
47
- database do
48
- host "db.test.com"
49
- name "jupiter"
50
- username "jupiter"
51
- password "test"
52
- end
53
-
54
50
  debian_app :venus do
55
51
  repository_name 'brownleej/venus'
56
52
  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.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Brownlee
@@ -74,13 +74,13 @@ files:
74
74
  - lib/ruby_yacht.rb
75
75
  - lib/ruby_yacht/dsl.rb
76
76
  - lib/ruby_yacht/dsl/app.rb
77
- - lib/ruby_yacht/dsl/app_type.rb
78
77
  - lib/ruby_yacht/dsl/configuration.rb
79
78
  - lib/ruby_yacht/dsl/database.rb
80
79
  - lib/ruby_yacht/dsl/dns_server.rb
81
80
  - lib/ruby_yacht/dsl/dsl.rb
82
81
  - lib/ruby_yacht/dsl/hook.rb
83
82
  - lib/ruby_yacht/dsl/project.rb
83
+ - lib/ruby_yacht/dsl/server_type.rb
84
84
  - lib/ruby_yacht/images/app-dependencies/Dockerfile.erb
85
85
  - lib/ruby_yacht/images/app/Dockerfile.erb
86
86
  - lib/ruby_yacht/images/app/before_startup.bash.erb
@@ -88,7 +88,6 @@ 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/setup.bash
92
91
  - lib/ruby_yacht/images/web/Dockerfile.erb
93
92
  - lib/ruby_yacht/images/web/add_app.rb
94
93
  - lib/ruby_yacht/images/web/add_project.rb
@@ -96,6 +95,8 @@ files:
96
95
  - lib/ruby_yacht/images/web/index.html.erb
97
96
  - lib/ruby_yacht/images/web/index_config.erb
98
97
  - lib/ruby_yacht/plugins.rb
98
+ - lib/ruby_yacht/plugins/mysql.rb
99
+ - lib/ruby_yacht/plugins/mysql/scripts/setup.bash
99
100
  - lib/ruby_yacht/plugins/rails.rb
100
101
  - lib/ruby_yacht/plugins/rails/scripts/install_gems.rb
101
102
  - lib/ruby_yacht/plugins/rails/scripts/load_seeds.rb
@@ -117,17 +118,18 @@ files:
117
118
  - spec/docker/Dockerfile
118
119
  - spec/docker/build.bash
119
120
  - spec/dsl/app_spec.rb
120
- - spec/dsl/app_type_spec.rb
121
121
  - spec/dsl/configuration_spec.rb
122
122
  - spec/dsl/database_spec.rb
123
123
  - spec/dsl/dns_server_spec.rb
124
124
  - spec/dsl/dsl_spec.rb
125
125
  - spec/dsl/hook_spec.rb
126
126
  - spec/dsl/project_spec.rb
127
+ - spec/dsl/server_type_spec.rb
127
128
  - spec/fixtures/app-dependencies-dockerfile-generic
128
129
  - spec/fixtures/app-dependencies-dockerfile-generic-with-library-install
129
130
  - spec/fixtures/app-dependencies-dockerfile-rails
130
131
  - spec/fixtures/database-dockerfile
132
+ - spec/fixtures/database-dockerfile-mysql
131
133
  - spec/fixtures/database-dockerfile-rails
132
134
  - spec/fixtures/database-dockerfile-with-seed-hooks
133
135
  - spec/fixtures/deploy-dockerfile
@@ -136,15 +138,21 @@ files:
136
138
  - spec/fixtures/mars-before-startup
137
139
  - spec/fixtures/mars-before-startup-rails
138
140
  - spec/fixtures/mars-before-startup-with-before-startup-hooks
141
+ - spec/fixtures/mars-before-startup-with-custom-file-copy
139
142
  - spec/fixtures/mars-dockerfile
140
143
  - spec/fixtures/mars-dockerfile-rails
141
144
  - spec/fixtures/mars-dockerfile-with-after-checkout-hooks
142
145
  - spec/fixtures/mars-dockerfile-with-before-startup-hooks
146
+ - spec/fixtures/mars-dockerfile-with-custom-file-copy
147
+ - spec/fixtures/mars-dockerfile-with-local-database
148
+ - spec/fixtures/mars-dockerfile-with-remote-database
143
149
  - spec/fixtures/mars-startup
144
150
  - spec/fixtures/mars-startup-rails
145
151
  - spec/fixtures/multi-project-web-dockerfile
146
152
  - spec/fixtures/web-dockerfile
153
+ - spec/fixtures/web-dockerfile-with-eponymous-app
147
154
  - spec/fixtures/web-dockerfile-with-primary-app
155
+ - spec/plugins/mysql_spec.rb
148
156
  - spec/plugins/rails_spec.rb
149
157
  - spec/runner/build_images_spec.rb
150
158
  - spec/runner/build_spec.rb
@@ -188,17 +196,18 @@ test_files:
188
196
  - spec/docker/Dockerfile
189
197
  - spec/docker/build.bash
190
198
  - spec/dsl/app_spec.rb
191
- - spec/dsl/app_type_spec.rb
192
199
  - spec/dsl/configuration_spec.rb
193
200
  - spec/dsl/database_spec.rb
194
201
  - spec/dsl/dns_server_spec.rb
195
202
  - spec/dsl/dsl_spec.rb
196
203
  - spec/dsl/hook_spec.rb
197
204
  - spec/dsl/project_spec.rb
205
+ - spec/dsl/server_type_spec.rb
198
206
  - spec/fixtures/app-dependencies-dockerfile-generic
199
207
  - spec/fixtures/app-dependencies-dockerfile-generic-with-library-install
200
208
  - spec/fixtures/app-dependencies-dockerfile-rails
201
209
  - spec/fixtures/database-dockerfile
210
+ - spec/fixtures/database-dockerfile-mysql
202
211
  - spec/fixtures/database-dockerfile-rails
203
212
  - spec/fixtures/database-dockerfile-with-seed-hooks
204
213
  - spec/fixtures/deploy-dockerfile
@@ -207,15 +216,21 @@ test_files:
207
216
  - spec/fixtures/mars-before-startup
208
217
  - spec/fixtures/mars-before-startup-rails
209
218
  - spec/fixtures/mars-before-startup-with-before-startup-hooks
219
+ - spec/fixtures/mars-before-startup-with-custom-file-copy
210
220
  - spec/fixtures/mars-dockerfile
211
221
  - spec/fixtures/mars-dockerfile-rails
212
222
  - spec/fixtures/mars-dockerfile-with-after-checkout-hooks
213
223
  - spec/fixtures/mars-dockerfile-with-before-startup-hooks
224
+ - spec/fixtures/mars-dockerfile-with-custom-file-copy
225
+ - spec/fixtures/mars-dockerfile-with-local-database
226
+ - spec/fixtures/mars-dockerfile-with-remote-database
214
227
  - spec/fixtures/mars-startup
215
228
  - spec/fixtures/mars-startup-rails
216
229
  - spec/fixtures/multi-project-web-dockerfile
217
230
  - spec/fixtures/web-dockerfile
231
+ - spec/fixtures/web-dockerfile-with-eponymous-app
218
232
  - spec/fixtures/web-dockerfile-with-primary-app
233
+ - spec/plugins/mysql_spec.rb
219
234
  - spec/plugins/rails_spec.rb
220
235
  - spec/runner/build_images_spec.rb
221
236
  - spec/runner/build_spec.rb
@@ -1,15 +0,0 @@
1
- #! /bin/bash
2
-
3
- DATABASE_NAME=$1
4
- DATABASE_USER=$2
5
- DATABASE_PASSWORD=$3
6
-
7
- service mysql start;
8
- COMMAND="CREATE USER '$DATABASE_USER'@'localhost' IDENTIFIED BY '$DATABASE_PASSWORD';";
9
- COMMAND="$COMMAND CREATE USER '$DATABASE_USER'@'%' IDENTIFIED BY '$DATABASE_PASSWORD';";
10
-
11
- COMMAND="$COMMAND GRANT ALL ON $DATABASE_NAME.* to '$DATABASE_USER'@'localhost';";
12
- COMMAND="$COMMAND GRANT ALL ON $DATABASE_NAME.* to '$DATABASE_USER'@'%';";
13
- COMMAND="$COMMAND CREATE DATABASE $DATABASE_NAME;";
14
-
15
- mysql -uroot -e "$COMMAND";