ruby_yacht 0.4.3 → 0.5.0

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: f958d7dd279688e4f761cfabde4f10696fea04f1
4
- data.tar.gz: 921dfd094b9fdea99292b7daf03abb92c3f47415
3
+ metadata.gz: 724d4833d4fccb763b4173463fd4d39a6c72b5af
4
+ data.tar.gz: 385d64ac428190fe57096eeb5382f03fd3de4099
5
5
  SHA512:
6
- metadata.gz: 6dd1410db4ef7cda53b1d5029102176c49e259896cde6cc68f882d65a03f02404382a667aa6551eedc829540fa89be75c59845d50e401e680fdf703df31cbe2a
7
- data.tar.gz: 529f3f2489158df1ec5e535955286fb4fbad23f310e67cb2ea86ed3fd783a98f442f490e8221eba69004e5f9d8123d6698d81a83d90c4be7914703289f8f4ebd
6
+ metadata.gz: 3acb66557ac774872c8548f5afc9bb3e9a0e5fa5b189e5c2846e19eed7e3afbe1f7ee3b7345140ace4ae838d5b2315f538a53745219896f7ee94a06b1c9f35d1
7
+ data.tar.gz: fad7d2289310ee0c3ffed0f02250d1c86060bdf0f64ea3c1190c343eaa05a965595e2b15aa3fdd54807f458303244807235d1aceae57031f449cc7578ff519f9
data/.gitignore CHANGED
@@ -2,3 +2,5 @@ tmp
2
2
  *.gem
3
3
  doc/coverage
4
4
  doc/code
5
+ doc/yard
6
+ .yardoc
data/.rdoc_options CHANGED
@@ -11,6 +11,7 @@ exclude:
11
11
  - "nohup.out"
12
12
  - "Gemfile"
13
13
  - "doc/coverage"
14
+ - "doc/yard"
14
15
  hyperlink_all: false
15
16
  line_numbers: false
16
17
  locale:
data/.yardopts ADDED
@@ -0,0 +1,4 @@
1
+ -o doc/yard
2
+ -m markdown
3
+ -
4
+ doc/*.md
data/README.md CHANGED
@@ -27,8 +27,8 @@ Enter this in the file:
27
27
 
28
28
  Your `run.rb` file will have two parts: A configuration block and the `Runner`
29
29
  command. The configuration block defines your projects and your apps. You can
30
- read [configuration_sample.rb](https://github.com/brownleej/ruby-yacht/blob/master/doc/configuration_sample.rb)
31
- for more information on how the configuration DSL.
30
+ read [the configuration documentation](/gems/ruby_yacht/file/doc/configuration.md)
31
+ for more information on the configuration options.
32
32
 
33
33
  The runner command invokes a RubyYacht script based on the command information.
34
34
 
@@ -210,8 +210,16 @@ branch.
210
210
  If you run it for a branch that you already have checked out, it will pull down
211
211
  the latest changes from the repository.
212
212
 
213
+ # Plugins and Customization
214
+
215
+ RubyYacht has a [plugin API](/gems/ruby_yacht/file/doc/plugins.md) for
216
+ customizing the behavior of your scripts. You can use plugins for defining new
217
+ app types or database types, or for adding hooks for the built-in types. This
218
+ plugin API is so powerful that all of the rails-specific and mysql-specific code
219
+ in RubyYacht is provided through plugins.
220
+
213
221
  # Additional Information
214
222
 
215
223
  If you're interested in contributing to the project, you can find more
216
- information in [CONTRIBUTING.md](https://github.com/brownleej/ruby-yacht/blob/master/doc/CONTRIBUTING.md).
224
+ information in [the contributing documentation](/gems/ruby_yacht/file/doc/contributing.md).
217
225
  You can also reach out to me on Twitter [@brownleej](https://twitter.com/brownleej)
data/doc/TODO.md CHANGED
@@ -8,11 +8,13 @@ for open tickets.
8
8
  approach
9
9
  * Look into issues with running shell command that has its own command-line
10
10
  flags.
11
+ * Create shorthands for loading config from external files.
11
12
 
12
13
  # Plugins
13
14
 
14
15
  * Better support for rails apps with no database
15
16
  * Configurable ports for database servers
17
+ * Support for SQLite databases
16
18
 
17
19
  # More customization
18
20
 
@@ -0,0 +1,301 @@
1
+ # Configuring RubyYacht
2
+
3
+ All configuration in RubyYacht is done through a `RubyYacht.configure` block.
4
+ This block allows you to run methods against `RubyYacht::Configuration::DSL` to
5
+ add projects and define hooks. Once the block is done, all the changes are added
6
+ into the shared `RubyYacht.configuration` object. You can run arbitrary code
7
+ inside this block, but take note that the `RubyYacht.configuration` object will
8
+ not be updated inside this block.
9
+
10
+ # Example
11
+
12
+ You can see [configuration_sample.rb](https://github.com/brownleej/ruby-yacht/blob/master/doc/configuration_sample.rb)
13
+ for an example of what a full configuration file would look like.
14
+
15
+ # Adding Projects
16
+
17
+ Inside a `configure` block, you can call `project :apollo` to add a project
18
+ named `apollo`. The `project` method takes a block, which allows you to run
19
+ methods against `RubyYacht::Project::DSL` to fill in the details of your
20
+ project.
21
+
22
+ ### Project Fields
23
+
24
+ You can provide the following fields.
25
+
26
+ <table>
27
+ <tr>
28
+ <th>Name</th>
29
+ <th>Description</th>
30
+ <th>Example</th>
31
+ <th>Default</th>
32
+ </tr>
33
+ <tr>
34
+ <td>system_prefix</td>
35
+ <td>
36
+ The prefix that is prepended before the names of the images and containers
37
+ for this project.
38
+ </td>
39
+ <td><code>system_prefix :foo</code></td>
40
+ <td>None; this is required.</td>
41
+ </tr>
42
+ <tr>
43
+ <td>domain</td>
44
+ <td>
45
+ The main domain for this project. Different apps will be added as
46
+ subdomains of this main domain.
47
+ </td>
48
+ <td><code>domain 'test.com'</code></td>
49
+ <td>None; this is required.</td>
50
+ </tr>
51
+ <tr>
52
+ <td>repository</td>
53
+ <td>
54
+ The host name for the code repository that holds the apps.
55
+ </td>
56
+ <td><code>repository 'github.com'</code></td>
57
+ <td>None; this is required.</td>
58
+ </tr>
59
+ <tr>
60
+ <td>check_out_locally</td>
61
+ <td>
62
+ Whether we should check out the code on the host system and map that
63
+ directory into the docker container. If this is set to false, the code
64
+ will not be easily accessible from the host system.
65
+ </td>
66
+ <td>
67
+ <code>check_out_locally # If you want to set it to true.</code>
68
+ </td>
69
+ <td>
70
+ False
71
+ </td>
72
+ </tr>
73
+ <tr>
74
+ <td>primary_app</td>
75
+ <td>
76
+ The name of the primary app that should be served from the main domain.
77
+ If this is nil, then the main domain will server a landing
78
+ page with a list of the apps, and the apps themselves will be accessed
79
+ through subdomains.
80
+ </td>
81
+ <td>
82
+ <code>primary_app :mars</code>
83
+ </td>
84
+ <td>
85
+ nil
86
+ </td>
87
+ </tr>
88
+ </table>
89
+
90
+ Inside a project block, you also define databases, DNS servers, and apps, as
91
+ described below.
92
+
93
+ ### Plugin-Specific Fields
94
+
95
+ If you have loaded the Rails plugin, which is loaded by default, the project
96
+ will also have the following fields:
97
+
98
+
99
+ <table>
100
+ <tr>
101
+ <th>Name</th>
102
+ <th>Description</th>
103
+ <th>Example</th>
104
+ <th>Default</th>
105
+ </tr>
106
+ <tr>
107
+ <td>rails_environment</td>
108
+ <td>
109
+ The environment for the Rails apps.
110
+ </td>
111
+ <td><code>rails_environment 'development'</code></td>
112
+ <td>development</td>
113
+ </tr>
114
+ <tr>
115
+ <td>rails_secret_key_base</td>
116
+ <td>
117
+ <p>
118
+ The key for signing sessions and other app secrets in the Rails apps.
119
+ </p>
120
+ <p>
121
+ You will probably want to keep this outside of your configuration
122
+ scripts and outside of source control, so that it is kept secure and can
123
+ be set to different values in different environments.
124
+ </p>
125
+ </td>
126
+ <td><code>rails_secret_key_base 'abc123'</code></td>
127
+ <td>None; this is required</td>
128
+ </tr>
129
+ </table>
130
+
131
+ For more information about working with the default plugins, see
132
+ [Default Plugins](#Default_Plugins) below.
133
+
134
+ # Adding Apps
135
+
136
+ Inside the project DSL, you can call `app :mars, :rails` to add a Rails app
137
+ called `mars`. You can also call `rails_app :mars` to do the same thing. Both
138
+ forms take a block, which allows you to call methods from `RubyYacht::App::DSL`.
139
+
140
+ If you are using a different app type, you can supply that type instead of
141
+ `rails`, but the app type must be defined through a [plugin](/gems/ruby_yacht/file/doc/plugins.md).
142
+
143
+ You can call the `app` method multiple times to add multiple databases.
144
+
145
+ ### App Fields
146
+
147
+ You can provide the following fields in the app DSL:
148
+
149
+ <table>
150
+ <tr>
151
+ <th>Name</th>
152
+ <th>Description</th>
153
+ <th>Example</th>
154
+ <td>Default</td>
155
+ </tr>
156
+ <tr>
157
+ <td>repository_name</td>
158
+ <td>
159
+ The name of the code repository holding this app. This is relative to the
160
+ project's repository.
161
+ </td>
162
+ <td><code>repository_name 'brownleej/mars'</code></td>
163
+ <td>None; this is required</td>
164
+ </tr>
165
+ <tr>
166
+ <td>database_name</td>
167
+ <td>
168
+ The name of the database this app uses. If this is not provided, the app
169
+ will not have any database configured automatically.
170
+ </td>
171
+ <td><code>database_name :apollo</code></td>
172
+ <td>nil</td>
173
+ </tr>
174
+ <tr>
175
+ <td>port</td>
176
+ <td>
177
+ <p>The port the app listens on.</p>
178
+ <p>
179
+ <strong>Note:</strong> The app servers will only be accessible within
180
+ the docker network; they will not be directly accessible from the host
181
+ machine or the outside world. For this reason, all of your apps can
182
+ share the same port without causing any conflicts.
183
+ </p>
184
+ </td>
185
+ <td><code>port 3000</code></td>
186
+ <td>8080</td>
187
+ </table>
188
+
189
+ # Adding Databases
190
+
191
+ Inside the project DSL, you can call `database :apollo, :mysql` to add a MySQL
192
+ database called `apollo`. You can also call `mysql_database :apollo` to do the
193
+ same thing. Both forms take a block, which allows you to call methods from
194
+ `RubyYacht::Database::DSL`.
195
+
196
+ You can call the `database` method multiple times to add multiple databases.
197
+
198
+ If you are using a different app type, you can supply that type instead of
199
+ `mysql`, but the app type must be defined through a [plugin](/gems/ruby_yacht/file/doc/plugins.md).
200
+
201
+ ### Database Fields
202
+
203
+ <table>
204
+ <tr>
205
+ <th>Name</th>
206
+ <th>Description</th>
207
+ <th>Example</th>
208
+ <td>Default</td>
209
+ </tr>
210
+ <tr>
211
+ <td>host</td>
212
+ <td>
213
+ The name of the host that the database server is on. If you provide
214
+ `localhost`, this will create a database image and a database container
215
+ for the database. If you provide any other value, this will not create
216
+ any database image or container, and will only use the database config
217
+ to point the apps toward the correct external server.
218
+ </td>
219
+ <td><code>host 'db1.test.com'</code></td>
220
+ <td>None; this is required.</td>
221
+ </tr>
222
+ <tr>
223
+ <td>username</td>
224
+ <td>
225
+ The name of the user that the apps will use to connect to the database.
226
+ </td>
227
+ <td><code>username 'apollo'</code></td>
228
+ <td>None; this is required.</td>
229
+ </tr>
230
+ <tr>
231
+ <td>password</td>
232
+ <td>
233
+ The password that the apps will use to connect to the database.
234
+ </td>
235
+ <td><code>password 'testpass'</code></td>
236
+ <td>None; this is required.</td>
237
+ </tr>
238
+ <tr>
239
+ <td>container_label</td>
240
+ <td>
241
+ The label for the images and containers for this database. For instance,
242
+ if your project prefix is `apollo` and the container label for the
243
+ database is `mysql`, the image and container for the database will be
244
+ called `apollo-mysql`.
245
+ </td>
246
+ <td><code>container_label :mysql</code></td>
247
+ <td>database</td>
248
+ </tr>
249
+ </table>
250
+
251
+ # DNS Server Config
252
+
253
+ If your network has custom DNS servers, you can call `dns_server` inside of a
254
+ project block to define your DNS server config. The `dns_server` method takes
255
+ no arguents, but takes a block which allows you to call methods from
256
+ `RubyYacht::DnsServer::DSL`.
257
+
258
+ You should only call the `dns_server` once for a given project.
259
+
260
+ ### DNS Server Fields
261
+
262
+
263
+ <table>
264
+ <tr>
265
+ <th>Name</th>
266
+ <th>Description</th>
267
+ <th>Example</th>
268
+ <td>Default</td>
269
+ </tr>
270
+ <tr>
271
+ <td>server</td>
272
+ <td>
273
+ The hostname or IP address for the DNS server. You can call this
274
+ multiple times to add multiple DNS servers
275
+ </td>
276
+ <td><code>server 'dns.test.com'</code></td>
277
+ <td>Empty; no DNS servers</td>
278
+ </tr>
279
+ <tr>
280
+ <td>search_domain</td>
281
+ <td>
282
+ The default search domains for server names. You can call this multiple
283
+ times to add multiple search domains.
284
+ </td>
285
+ <td><code>search_domain 'db.test.com'</code></td>
286
+ <td>Empty; no DNS search domains</td>
287
+ </tr>
288
+ </table>
289
+
290
+ # Default Plugins
291
+
292
+ By default, RubyYacht comes with two plugins, defined under the
293
+ `RubyYacht::Plugins` namespace:
294
+
295
+ * Rails, for defining app servers for Rails apps
296
+ * MySQL, for defining MySQL database servers
297
+
298
+ If you want to unload the default plugins, you can call
299
+ `RubyYacht.configuration.clear` before defining the rest of your configuration.
300
+ You can then load individual plugins by calling, for instance,
301
+ `RubyYacht::Plugins::MySQL.load`.
@@ -27,14 +27,12 @@ RubyYacht.configure do
27
27
  rails_secret_key_base 'abc'
28
28
 
29
29
  # The configuration for the database the app uses.
30
- database do
30
+ # The apps will share a database called apollo
31
+ mysql_database :apollo do
31
32
  # A database host of localhost tells ruby-yacht to build a database
32
33
  # container for the apps' local database.
33
34
  host "localhost"
34
35
 
35
- # The apps will share a database called apollo
36
- name "apollo"
37
-
38
36
  # The credentials for accessing the database.
39
37
  username "apollo"
40
38
  password "test"
@@ -43,11 +41,13 @@ RubyYacht.configure do
43
41
  rails_app :mars do
44
42
  # This app's repository is at github.com/brownleej/mars
45
43
  repository_name 'brownleej/mars'
44
+ database_name :apollo
46
45
  end
47
46
 
48
47
  rails_app :saturn do
49
48
  # This app's repository is at github.com/brownleej/saturn
50
49
  repository_name 'brownleej/saturn'
50
+ database_name :apollo
51
51
  end
52
52
 
53
53
  # This indicates that apollo.docker.local should serve requests to the mars
@@ -63,7 +63,7 @@ RubyYacht.configure do
63
63
  repository "github.com"
64
64
  rails_secret_key_base 'abc'
65
65
 
66
- database do
66
+ mysql_database :jupiter do
67
67
  # Because this host has a real domain, we will not build a database
68
68
  # container. The database at this host must be set up in advance with
69
69
  # the database and the credentials in this file.
@@ -71,17 +71,19 @@ RubyYacht.configure do
71
71
  # When the apps start, they will automatically run database migrations
72
72
  # against this database.
73
73
  host "db.test.com"
74
- name "jupiter"
74
+
75
75
  username "jupiter"
76
76
  password "test"
77
77
  end
78
78
 
79
79
  rails_app :venus do
80
80
  repository_name 'brownleej/venus'
81
+ database_name :jupiter
81
82
  end
82
83
 
83
84
  rails_app :saturn do
84
85
  repository_name 'brownleej/saturn'
86
+ database_name :jupiter
85
87
  end
86
88
 
87
89
  # Because this project has no primary app, jupiter.docker.local will serve
@@ -9,4 +9,4 @@ requires caution when developing and running tests. The tests contain extensive
9
9
  stubs to prevent them from interacting with a real docker environment, and you
10
10
  should use the same techniques in your own tests. I would also recommend that
11
11
  you run the tests within their own docker container. You can find tools for
12
- building such a container in [spec/docker](../spec/docker)
12
+ building such a container in `spec/docker`.
data/doc/plugins.md ADDED
@@ -0,0 +1,230 @@
1
+ # Plugins
2
+
3
+ RubyYacht's plugin engine allows you to define your own server types, and add
4
+ custom hooks for what happens when building images and running containers.
5
+
6
+ You can define server types and hooks inside of a `RubyYacht.configure` block. Like
7
+ other parts of the configuration, they will not be committed until the
8
+ `configure` block is over. The app and database DSLs require that the server
9
+ types be committed, so you should add server types in a separate configuration
10
+ block from the one where you define your projects.
11
+
12
+ # Adding Server Types
13
+
14
+ You can call `server_type :mongo` to define a server type called `mongo`. The
15
+ `server_type` method takes a block, which allows you to call methods from
16
+ `RubyYacht::ServerType::DSL`.
17
+
18
+ ### Server Type Fields
19
+
20
+ You can add the following fields to fill out the server type:
21
+
22
+ <table>
23
+ <tr>
24
+ <th>Name</th>
25
+ <th>Description</th>
26
+ <th>Example</th>
27
+ <th>Default</th>
28
+ </tr>
29
+ <tr>
30
+ <td>container_type</td>
31
+ <td>
32
+ The type of container that this server type applies to. This can be either
33
+ `app` or `database`.
34
+ </td>
35
+ <td>
36
+ <code>container_type :app</code>
37
+ </td>
38
+ <td>None; this is required.</td>
39
+ </tr>
40
+ <tr>
41
+ <td>baseline_image</td>
42
+ <td>
43
+ <p>
44
+ The docker image that we should use as the baseline for the images for
45
+ these servers.
46
+ </p>
47
+ <p>
48
+ This is currently only used for the app images.
49
+ </p>
50
+ </td>
51
+ <td>
52
+ <code>baseline_image 'ruby:2.3'</code>
53
+ </td>
54
+ <td>
55
+ None; this is required.
56
+ </td>
57
+ </tr>
58
+ <tr>
59
+ <td>project_attribute</td>
60
+ <td>
61
+ <p>This defines an attribute that can be set on a project.</p>
62
+ <p>
63
+ This can be set on any project once the server type has been loaded.
64
+ </p>
65
+ <p>
66
+ This accepts hash of options. The currently accepted options are `name`
67
+ and `default`. The full name of the attribute will be prefixed with the
68
+ name of the server type, to keep server types from defining conflicting
69
+ attributes.
70
+ </p>
71
+ </td>
72
+ <td><code>project_attribute name: :environment, default: 'staging'</code></td>
73
+ <td>None; no custom project attributes</td>
74
+ </tr>
75
+ <tr>
76
+ <td>server_attribute</td>
77
+ <td>
78
+ <p>This defines an attribute that can be set on a server.</p>
79
+ <p>
80
+ This can be set on any server of the matching type once the server type
81
+ has been loaded.
82
+ </p>
83
+ <p>
84
+ This accepts hash of options. The currently accepted options are `name`
85
+ and `default`. The full name of the attribute will be prefixed with the
86
+ name of the server type, to keep server types from defining conflicting
87
+ attributes.
88
+ </p>
89
+ </td>
90
+ <td><code>server_attribute name: :key</code></td>
91
+ <td>None; no custom server attributes</td>
92
+ </tr>
93
+ <tr>
94
+ <td>environment_variable</td>
95
+ <td>
96
+ <p>
97
+ A custom environment variable that is set in an image for this plugin.
98
+ </p>
99
+ <p>
100
+ This accepts two parameters (image and name), as well as a block. The
101
+ image is the type of image this is set on: app, app_dependencies, or
102
+ database. The block provides a value for the variable. The block will
103
+ have access to the context of the image we're building, as
104
+ <code>@project</code>, <code>@app</code>, and <code>@database</code>.
105
+ </p>
106
+ <p>
107
+ An app type plugin can also provide custom environment variable for a
108
+ database server.
109
+ </p>
110
+ <p>
111
+ You can call this multiple times to define multiple environment variables.
112
+ </p>
113
+ </td>
114
+ <td>
115
+ <code>
116
+ environment_variable :app_dependencies, 'RAILS_ENV' do
117
+ @project.rails_environment
118
+ end
119
+ </code>
120
+ </td>
121
+ <td>None; no custom environment variables.</td>
122
+ </tr>
123
+ </table>
124
+
125
+ # Adding Hooks
126
+
127
+ To define a hook, you can call `before`, `during`, or `after`, followed by an
128
+ event type. A before-hook is run before the event happens, an after-hook is run
129
+ after the event happens, and a during-hook provides the logic for making an
130
+ event happen.
131
+
132
+ These methods also take a block which allow you to call methods from
133
+ `RubyYacht::Hook::DSL`.
134
+
135
+ ### Event Types
136
+
137
+ These are the event types that you can hook into:
138
+
139
+ <table>
140
+ <tr>
141
+ <th>Name</th>
142
+ <th>Description</th>
143
+ </tr>
144
+ <tr>
145
+ <td>startup</td>
146
+ <td>An app server is starting up.</td>
147
+ </tr>
148
+ <tr>
149
+ <td>build_checkout</td>
150
+ <td>
151
+ The code for an app is being checked out when building an app image.
152
+ </td>
153
+ </tr>
154
+ <tr>
155
+ <td>install_libraries</td>
156
+ <td>The libraries for an app or database server are being installed.</td>
157
+ </tr>
158
+ <tr>
159
+ <td>create_databases</td>
160
+ <td>The databases for a database server are being created.</td>
161
+ </tr>
162
+ <tr>
163
+ <td>load_database_seeds</td>
164
+ <td>The seed data for the app is being loaded on the database server.</td>
165
+ </tr>
166
+ </table>
167
+
168
+ ### Fields
169
+
170
+ The hook DSL allows you to set the following fields:
171
+
172
+ <table>
173
+ <tr>
174
+ <th>Name</th>
175
+ <th>Description</th>
176
+ <th>Example</th>
177
+ <th>Default</th>
178
+ </tr>
179
+ <tr>
180
+ <td>server_type</td>
181
+ <td>The name of the server type that this hook applies to</td>
182
+ <td><code>server_type :rails</code></td>
183
+ <td>None; this is required</td>
184
+ </tr>
185
+ <tr>
186
+ <td>command</td>
187
+ <td>The shell command that should be run when the hook executes</td>
188
+ <td><code>command 'cp /var/docker/database.yml /var/code/config/'</code></td>
189
+ <td>
190
+ None; this is required. However, it can also be set by calling
191
+ `run_script`.
192
+ </td>
193
+ </tr>
194
+ <tr>
195
+ <td>script_folder</td>
196
+ <td>
197
+ The path to the folder in the host machine containing files to copy for
198
+ this hook.
199
+ </td>
200
+ <td><code>script_folder './scripts'</code></td>
201
+ <td>The working directory</td>
202
+ </tr>
203
+ <tr>
204
+ <td>copy_file</td>
205
+ <td>
206
+ The name of a file that should be copied from the host machine into the
207
+ image. This is relative to the hook's script folder.
208
+ </td>
209
+ <td><code>copy_file 'setup.rb'</code></td>
210
+ <td>None, meaning that no files are copied for this hook.</td>
211
+ </tr>
212
+ <tr>
213
+ <td>run_script</td>
214
+ <td>
215
+ This specifies that this hook runs a script from the host machine. This
216
+ will set the `copy_file` and the `command`.
217
+ </td>
218
+ <td><code>run_script 'setup.rb'</code></td>
219
+ <td>None; if you are not using this you must call `command` instead.</td>
220
+ </tr>
221
+ </table>
222
+
223
+ ### Setting Defaults
224
+
225
+ Your plugins will likely have many hooks that are using some of the same
226
+ settings, so you can set defaults for them by calling `add_hooks`. This method
227
+ takes a hash containing options for the hooks, and a block for adding them. Any
228
+ hooks added in the block will have those options set.
229
+
230
+ The supported options are `script_folder` and `server_type`.
@@ -86,7 +86,7 @@ module RubyYacht
86
86
  ##
87
87
  # :method: container_label
88
88
  # You can call `container_label 'mysql'` to give this database a container
89
- # name that is {project}-mysql.
89
+ # name that is (project)-mysql.
90
90
  add_attribute :container_label, :database
91
91
 
92
92
  creates_object Database
@@ -114,6 +114,7 @@ module RubyYacht
114
114
  end
115
115
  end
116
116
 
117
+ # This method creates a Hook object from the DSL.
117
118
  def create_object
118
119
  @copied_file_path = File.join(@script_folder || '.', @copy_file) if @copy_file
119
120
  super
data/ruby_yacht.gemspec CHANGED
@@ -1,7 +1,7 @@
1
1
  Gem::Specification.new do |spec|
2
2
  spec.name = 'ruby_yacht'
3
- spec.version = '0.4.3'
4
- spec.date = '2016-04-27'
3
+ spec.version = '0.5.0'
4
+ spec.date = '2016-05-05'
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"
7
7
  spec.authors = ["John Brownlee"]
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_yacht
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.3
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Brownlee
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-04-27 00:00:00.000000000 Z
11
+ date: 2016-05-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -64,13 +64,16 @@ files:
64
64
  - .rspec
65
65
  - .rubocop.yml
66
66
  - .travis.yml
67
+ - .yardopts
67
68
  - Gemfile
68
69
  - Gemfile.lock
69
70
  - LICENSE
70
71
  - README.md
71
- - doc/CONTRIBUTING.md
72
72
  - doc/TODO.md
73
+ - doc/configuration.md
73
74
  - doc/configuration_sample.rb
75
+ - doc/contributing.md
76
+ - doc/plugins.md
74
77
  - lib/ruby_yacht.rb
75
78
  - lib/ruby_yacht/dsl.rb
76
79
  - lib/ruby_yacht/dsl/app.rb