ruby_yacht 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
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";