ruby_yacht 0.6.1 → 0.7.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 (80) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +1 -1
  3. data/README.md +7 -5
  4. data/doc/TODO.md +1 -5
  5. data/doc/configuration.md +51 -0
  6. data/doc/plugins.md +4 -0
  7. data/lib/ruby_yacht/dsl/configuration.rb +26 -1
  8. data/lib/ruby_yacht/dsl/dsl.rb +35 -3
  9. data/lib/ruby_yacht/dsl/hook.rb +4 -0
  10. data/lib/ruby_yacht/dsl/project.rb +11 -0
  11. data/lib/ruby_yacht/images/app/Dockerfile.erb +2 -1
  12. data/lib/ruby_yacht/images/app/checkout.bash +1 -1
  13. data/lib/ruby_yacht/images/app-dependencies/Dockerfile.erb +7 -1
  14. data/lib/ruby_yacht/images/database/Dockerfile.erb +3 -1
  15. data/lib/ruby_yacht/images/database/checkout.bash +3 -4
  16. data/lib/ruby_yacht/images/web/Dockerfile.erb +2 -0
  17. data/lib/ruby_yacht/plugins/nginx.rb +5 -0
  18. data/lib/ruby_yacht/plugins/rails/scripts/load_seeds.rb +10 -1
  19. data/lib/ruby_yacht/plugins/rails/scripts/prepare_rails_for_launch.rb +1 -1
  20. data/lib/ruby_yacht/plugins/rails/scripts/update_rails_config.rb +6 -4
  21. data/lib/ruby_yacht/plugins/rails.rb +30 -17
  22. data/lib/ruby_yacht/plugins.rb +1 -1
  23. data/lib/ruby_yacht/runner/build_images.rb +5 -7
  24. data/lib/ruby_yacht/runner/run_containers.rb +1 -2
  25. data/ruby_yacht.gemspec +2 -2
  26. data/spec/docker/run.bash +4 -0
  27. data/spec/dsl/configuration_spec.rb +29 -0
  28. data/spec/dsl/dsl_spec.rb +56 -0
  29. data/spec/dsl/hook_spec.rb +28 -5
  30. data/spec/dsl/project_spec.rb +46 -0
  31. data/spec/dsl/server_type_spec.rb +3 -0
  32. data/spec/fixtures/app-dependencies-dockerfile-generic +3 -1
  33. data/spec/fixtures/app-dependencies-dockerfile-generic-with-library-install +3 -1
  34. data/spec/fixtures/app-dependencies-dockerfile-rails +4 -3
  35. data/spec/fixtures/app-dependencies-dockerfile-rails-production +35 -0
  36. data/spec/fixtures/app-dependencies-dockerfile-with-https-repository +25 -0
  37. data/spec/fixtures/app-dependencies-dockerfile-with-no-repository +2 -0
  38. data/spec/fixtures/database-dockerfile +1 -1
  39. data/spec/fixtures/database-dockerfile-mysql +1 -1
  40. data/spec/fixtures/database-dockerfile-rails +2 -6
  41. data/spec/fixtures/database-dockerfile-rails-mysql +38 -0
  42. data/spec/fixtures/database-dockerfile-rails-with-no-repository +1 -3
  43. data/spec/fixtures/database-dockerfile-with-seed-hooks +1 -1
  44. data/spec/fixtures/local_config.yml +8 -0
  45. data/spec/fixtures/mars-dockerfile +0 -1
  46. data/spec/fixtures/mars-dockerfile-rails +0 -1
  47. data/spec/fixtures/mars-dockerfile-rails-with-no-repository +0 -1
  48. data/spec/fixtures/mars-dockerfile-with-after-checkout-hooks +0 -1
  49. data/spec/fixtures/mars-dockerfile-with-before-startup-hooks +0 -1
  50. data/spec/fixtures/mars-dockerfile-with-custom-file-copy +0 -1
  51. data/spec/fixtures/mars-dockerfile-with-local-database +0 -1
  52. data/spec/fixtures/mars-dockerfile-with-no-repository +0 -1
  53. data/spec/fixtures/mars-dockerfile-with-remote-database +0 -1
  54. data/spec/fixtures/mars-startup-rails +1 -1
  55. data/spec/fixtures/mars-startup-rails-with-no-repository +1 -1
  56. data/spec/fixtures/web-dockerfile-nginx +3 -0
  57. data/spec/integration/01_normal_config_spec.rb +352 -0
  58. data/spec/integration/{create_new_project_spec.rb → 02_creating_new_project_spec.rb} +2 -2
  59. data/spec/integration/03_no_repository_spec.rb +56 -0
  60. data/spec/integration/04_no_database_spec.rb +58 -0
  61. data/spec/integration/05_https_repository_spec.rb +52 -0
  62. data/spec/integration/06_production_environment_spec.rb +72 -0
  63. data/spec/integration/07_local_checkout_spec.rb +52 -0
  64. data/spec/integration/08_multiple_projects_spec.rb +46 -0
  65. data/spec/integration/09_titular_app_spec.rb +53 -0
  66. data/spec/integration/10_misc_scenarios_spec.rb +97 -0
  67. data/spec/integration/run.rb +18 -2
  68. data/spec/plugins/rails_spec.rb +73 -16
  69. data/spec/runner/build_images_spec.rb +17 -1
  70. data/spec/runner/run_containers_spec.rb +3 -3
  71. data/spec/support/integration_helpers.rb +18 -4
  72. metadata +30 -20
  73. data/spec/integration/build_images_spec.rb +0 -210
  74. data/spec/integration/build_spec.rb +0 -23
  75. data/spec/integration/checkout_spec.rb +0 -94
  76. data/spec/integration/implode_spec.rb +0 -20
  77. data/spec/integration/run_containers_spec.rb +0 -279
  78. data/spec/integration/services_spec.rb +0 -99
  79. data/spec/integration/shell_spec.rb +0 -31
  80. data/spec/integration/update_hosts_spec.rb +0 -35
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f40e50df8f66f681ab0584dbb9b748898a18ce2f
4
- data.tar.gz: 569e3512b1ac0e7a81306abb084841f324adbbb4
3
+ metadata.gz: e7b48a435714287ebf157e4cbacd1db8012a323a
4
+ data.tar.gz: 433d477edaaa3f78ec21235a8f0b16f56e1b8fe7
5
5
  SHA512:
6
- metadata.gz: a26f6daca1154ae559ec50f1bd5b319bfae4f380c7ed1e5059e4aa0d02b9b71ededcc7cfc005c0e6190d94514fbd996f2fd5c60ec4bd07b0a0952028db73dac2
7
- data.tar.gz: 6a283bcd4fa01ebb09a09498411c2714a609f2afea28e3de78d864f702a0c49a504f679b63af29a415bc6d7e2e0670e1f8717db048ce3b9e299cbc5e7457fcc3
6
+ metadata.gz: 5ebdfbb69595cede3d1a91633317c10b7e507b8a9e2a86215be040a7c385a187a0fd1d56e7fcbef8f988695a94ef9ae52556b9c7b321e45406217b13b6dfa44b
7
+ data.tar.gz: 5b2121af08a0a47f85f969ef1d6e4de3f4ae37be3484be94d847d9d6f1f102ecb9b1bd348c134b46ebe5a6acb7aaaecd026df64569074dbf5aeb46dcbfc06728
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ruby_yacht (0.6.1)
4
+ ruby_yacht (0.7.0.pre1)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/README.md CHANGED
@@ -146,11 +146,13 @@ it will build the following images:
146
146
  ### run_containers
147
147
 
148
148
  This command runs all of the containers for the images described above. Each
149
- container will have the same name as its image. Each container will be on a
150
- docker network called `apollo`, and will have network aliases corresponding to
151
- the container names. For instance, the `apollo-web` container will be able to
152
- access the `apollo-mars` container under the hostname `apollo-mars`. The apps
153
- will also be able to talk to each other using these network aliases.
149
+ container will have the same name as its image. Each container for the `apollo`
150
+ project will be on a docker network called `apollo`, and will have network
151
+ aliases corresponding to the container names. For instance, the `apollo-web`
152
+ container will be able to access the `apollo-mars` container under the hostname
153
+ `apollo-mars`. The apps will also be able to talk to each other using these
154
+ network aliases. Containers for different projects will be in different
155
+ networks, and will not be able to communicate.
154
156
 
155
157
  It will not run a container for the `app-dependencies` images. Those images are
156
158
  intended to use as a baseline for the app and database images, to reduce their
data/doc/TODO.md CHANGED
@@ -1,6 +1,2 @@
1
1
  See the [GitHub Issue Tracker](https://github.com/brownleej/ruby-yacht/issues)
2
- for open tickets.
3
-
4
- # General
5
-
6
- * Test on Windows
2
+ for open tickets.
data/doc/configuration.md CHANGED
@@ -47,6 +47,15 @@ You can provide the following fields.
47
47
  <td><code>repository 'github.com'</code></td>
48
48
  <td>None; this is required.</td>
49
49
  </tr>
50
+ <tr>
51
+ <td>repository_protocol</td>
52
+ <td>
53
+ <p>The protocol that we use to check out the repositories.</p>
54
+ <p>This can be `ssh`, `http`, or `https`.</p>
55
+ </td>
56
+ <td><code>repository_protocol 'https'</code></td>
57
+ <td>ssh</td>
58
+ </tr>
50
59
  <tr>
51
60
  <td>check_out_locally</td>
52
61
  <td>
@@ -362,6 +371,48 @@ You should only call the `dns_server` once for a given project.
362
371
  </tr>
363
372
  </table>
364
373
 
374
+ # Local Configuration
375
+
376
+ You may want to have some of your configuration stored in a local file, outside
377
+ of source control, to handle host-specific settings. For instance, you may have
378
+ different users using different remote databases, or you may want to set the
379
+ Rails environment differently in production than in testing. You can do this
380
+ through two steps. First, you can call `add_local_config` to load the
381
+ configuration from the YAML file:
382
+
383
+ RubyYacht.configure do
384
+ add_local_config File.join(File.dirname(__FILE__), 'config.yml')
385
+ end
386
+
387
+ This has to be done in a separate configuration block, because the loaded config
388
+ will not be available until the configuration block is over.
389
+
390
+ Inside your main configuration block, you can then call `copy_local_config` to
391
+ set the fields in the DSL based on the local config:
392
+
393
+ project :apollo do
394
+ system_prefix :apollo
395
+
396
+ copy_local_config :rails_environment, :rails_secret_key_base
397
+ end
398
+
399
+ You may also want to have some of your configuration fields grouped together to
400
+ keep the config file neater. For instance, you can have a database section of
401
+ the config YML file that is structured like this:
402
+
403
+ :database:
404
+ :apollo:
405
+ :host: db1.apollo.com
406
+ :username: apollo
407
+ :password: ;kljfadsl
408
+ :name: apollo_production
409
+
410
+ And then inside your project config, you could call:
411
+
412
+ database :apollo do
413
+ copy_local_config :host, :username, :password, :name, from: 'database.apollo'
414
+ end
415
+
365
416
  # Default Plugins
366
417
 
367
418
  By default, RubyYacht comes with three plugins, defined under the
data/doc/plugins.md CHANGED
@@ -177,6 +177,10 @@ These are the event types that you can hook into:
177
177
  <td>add_app_config</td>
178
178
  <td>We are adding the configuration for a single app to a web server.</td>
179
179
  </tr>
180
+ <tr>
181
+ <td>cleanup</td>
182
+ <td>This is run at the end of the build process for each image.</td>
183
+ </tr>
180
184
  </table>
181
185
 
182
186
  ### Fields
@@ -1,3 +1,4 @@
1
+ require 'yaml'
1
2
  require_relative 'project'
2
3
  require_relative 'hook'
3
4
  require_relative 'server_type'
@@ -18,6 +19,7 @@ module RubyYacht
18
19
  @hooks = []
19
20
  @server_types = []
20
21
  @avoid_docker_machine = false
22
+ @local_config = {}
21
23
  end
22
24
 
23
25
  # The projects that are part of this system.
@@ -38,6 +40,9 @@ module RubyYacht
38
40
  # ignored.
39
41
  attr_accessor :disable_docker_machine
40
42
 
43
+ # The configuration that has been loaded from a local YAML file.
44
+ attr_accessor :local_config
45
+
41
46
  # This method pulls up the hooks that we have defined.
42
47
  #
43
48
  # ### Parameters
@@ -102,6 +107,7 @@ module RubyYacht
102
107
  def initialize
103
108
  self.load_custom_attributes
104
109
  @hook_options = {}
110
+ @local_config = {}
105
111
  end
106
112
 
107
113
  ##
@@ -137,6 +143,9 @@ module RubyYacht
137
143
  # The default options for the hooks we're defining in the current block.
138
144
  attr_accessor :hook_options
139
145
 
146
+ # The configuration that has been loaded from a local YAML file.
147
+ attr_accessor :local_config
148
+
140
149
  # This method sets default attributes for a group of hooks.
141
150
  #
142
151
  # Any hooks that you create in the associated block will have the included
@@ -154,6 +163,20 @@ module RubyYacht
154
163
  self.hook_options = old_options
155
164
  end
156
165
 
166
+ # This method loads config from a local YAML file.
167
+ #
168
+ # The contents of the file will be stored in the global configuration's
169
+ # `local_config` field. From there, it can be loaded into another DSL
170
+ # object by calling `copy_local_config`.
171
+ #
172
+ # ### Parameters
173
+ #
174
+ # * **path: String** The full path to the config file.
175
+ def add_local_config(path)
176
+ new_config = YAML.load_file(path)
177
+ @local_config = @local_config.merge(new_config)
178
+ end
179
+
157
180
  # This method adds a before hook.
158
181
  #
159
182
  # ### Parameters
@@ -193,7 +216,7 @@ module RubyYacht
193
216
  add_hook :during, event_type, &block
194
217
  end
195
218
 
196
- creates_object Configuration, %w(projects hooks server_types)
219
+ creates_object Configuration, %w(projects hooks server_types local_config)
197
220
 
198
221
  private
199
222
 
@@ -222,6 +245,8 @@ module RubyYacht
222
245
  self.configuration.send("#{field}=", self.configuration.send(field) + new_configuration.send(field))
223
246
  end
224
247
 
248
+ self.configuration.local_config = self.configuration.local_config.merge(new_configuration.local_config)
249
+
225
250
  new_configuration.server_types.each do |type|
226
251
  if self.configuration.server_types.any? { |existing| existing.name == type.name }
227
252
  raise "Server type already registered: #{type.name}"
@@ -95,7 +95,7 @@ module RubyYacht
95
95
  # * **name: Symbol** The name of the method. The name of the
96
96
  # attribute will be this name, followed by an s.
97
97
  def add_list(name)
98
- add_generic_attribute name, "#{name}s", [], false do |value|
98
+ add_generic_attribute name, "#{name}s".to_sym, [], false do |value|
99
99
  variable_name = "@#{name}s"
100
100
  list = instance_variable_get(variable_name)
101
101
  list << value
@@ -160,7 +160,7 @@ module RubyYacht
160
160
  # * **type: Class** The class type that provides the DSL when they
161
161
  # call this method.
162
162
  def add_object_list(name, type)
163
- add_generic_attribute name, "#{name}s", [], false do |*args, &config_block|
163
+ add_generic_attribute name, "#{name}s".to_sym, [], false do |*args, &config_block|
164
164
  variable_name = "@#{name}s"
165
165
  list = instance_variable_get(variable_name)
166
166
  object_config = type.new(*args)
@@ -218,7 +218,7 @@ module RubyYacht
218
218
  if server_type.respond_to?(self.class.custom_attribute_method)
219
219
  attributes = server_type.send(self.class.custom_attribute_method)
220
220
  attributes.each do |attribute|
221
- attribute = attribute.merge(name: "#{server_type.name}_#{attribute[:name]}")
221
+ attribute = attribute.merge(name: "#{server_type.name}_#{attribute[:name]}".to_sym)
222
222
  load_custom_attribute(attribute)
223
223
  end
224
224
  end
@@ -290,6 +290,38 @@ module RubyYacht
290
290
  end
291
291
  self
292
292
  end
293
+
294
+ # This method copies fields from the local config to this DSL.
295
+ #
296
+ # The local config must have been loaded in a previous configuration block
297
+ # using the `add_local_config` method.
298
+ #
299
+ # The keys in the local config file should all be symbols, as should the
300
+ # `fields`. If they are not, this method may not be able to find the
301
+ # config entries.
302
+ #
303
+ # Any fields that are not present in the local config will be set to nil.
304
+ #
305
+ # ### Parameters
306
+ #
307
+ # * **fields: [Symbol]** The fields to load.
308
+ # * **from: String** A dot-separated key path to the location in
309
+ # the config file that contains the dictionary
310
+ # that we are pulling the fields from.
311
+ def copy_local_config(*fields, from:nil)
312
+ dictionary = RubyYacht.configuration.local_config
313
+ if from
314
+ from.split('.').each do |key|
315
+ dictionary = dictionary[key.to_sym]
316
+ end
317
+ end
318
+ fields.each do |field|
319
+ unless self.singleton_class.all_attributes.include?(field)
320
+ raise "Undefined field in #{self.class.name}: #{field}"
321
+ end
322
+ instance_variable_set("@#{field}", dictionary[field])
323
+ end
324
+ end
293
325
 
294
326
  # This method checks that all of the required attributes have been set on
295
327
  # the object.
@@ -248,11 +248,15 @@ module RubyYacht
248
248
 
249
249
  # The command that should be run in a Dockerfile for this behavior.
250
250
  def dockerfile_command
251
+ value = self.value
252
+ return nil unless value
251
253
  "ENV #{@name} #{value}"
252
254
  end
253
255
 
254
256
  # The command that should be run in a shell script for this behavior.
255
257
  def shell_command
258
+ value = self.value
259
+ return nil unless value
256
260
  "export #{@name}=\"#{value}\""
257
261
  end
258
262
  end
@@ -21,6 +21,11 @@ module RubyYacht
21
21
  # The hostname for the repository that contains the code for the apps.
22
22
  attr_accessor :repository
23
23
 
24
+ # The protocol that we use to check out the repository.
25
+ #
26
+ # This can be `ssh`, `http`, or `https`.
27
+ attr_accessor :repository_protocol
28
+
24
29
  # Whether we should check out the code on the host machine, rather than
25
30
  # keeping it entirely inside the container.
26
31
  attr_accessor :check_out_locally
@@ -80,6 +85,12 @@ module RubyYacht
80
85
  # You can call `repository 'github.com'` to set the project's `repository`
81
86
  # to `github.com`
82
87
  add_attribute :repository
88
+
89
+ ##
90
+ # :method: repository_protocol
91
+ # You can call `repository_protocol :https` to tell the scripts to check
92
+ # out the repositories over HTTPS rather than SSH.
93
+ add_attribute :repository_protocol, :ssh
83
94
 
84
95
  #
85
96
  # :method: primary_app
@@ -10,7 +10,6 @@ ENV DATABASE_TYPE <%= database.server_type %>
10
10
  ENV DATABASE_PORT <%= database.port %>
11
11
  <% end %>
12
12
  ENV APP_PORT <%= @app.port %>
13
- ENV REPOSITORY_HOST <%= @project.repository %>
14
13
  ENV SYSTEM_PREFIX <%= @project.system_prefix %>
15
14
  <% if @app.repository_name %>
16
15
  ENV REPOSITORY_NAME <%= @app.repository_name %>
@@ -37,6 +36,8 @@ WORKDIR /var/code
37
36
  <%= include_event(@app, :build_new_app) %>
38
37
  <% end %>
39
38
 
39
+ <%= include_event @app, :cleanup %>
40
+
40
41
  EXPOSE <%= @app.port %>
41
42
 
42
43
  CMD /var/docker/startup.bash
@@ -2,5 +2,5 @@
2
2
 
3
3
  if [ ! -d /var/code/.git ]
4
4
  then
5
- git clone git@$REPOSITORY_HOST:$REPOSITORY_NAME /var/code
5
+ git clone $REPOSITORY_HOST/$REPOSITORY_NAME /var/code
6
6
  fi
@@ -6,6 +6,12 @@
6
6
 
7
7
  FROM <%= @server_type.baseline_image %>
8
8
 
9
+ <% repository_host = @project.repository %>
10
+ <% if @project.repository_protocol == :ssh %>
11
+ <% repository_host = 'git@' + repository_host %>
12
+ <% end %>
13
+
14
+ ENV REPOSITORY_HOST <%= @project.repository_protocol %>://<%= repository_host %>
9
15
  <%= include_event @project.apps, :initialize_app_environment %>
10
16
 
11
17
  RUN mkdir -p /root/.ssh
@@ -21,7 +27,7 @@ RUN apt-get update && apt-get upgrade -y
21
27
  <% next unless app.server_type == @server_type.name %>
22
28
  <% next unless app.repository_name %>
23
29
 
24
- RUN git clone git@<%= @project.repository %>:<%= app.repository_name %> /var/code/<%= app.name %>
30
+ RUN git clone $REPOSITORY_HOST/<%= app.repository_name %> /var/code/<%= app.name %>
25
31
  WORKDIR /var/code/<%= app.name %>
26
32
  <%= include_event app, :install_libraries %>
27
33
  <% end %>
@@ -18,7 +18,7 @@ RUN chmod u+x /var/docker/*
18
18
  <% @database.apps.each do |app| %>
19
19
 
20
20
  <% next unless app.repository_name %>
21
- RUN /var/docker/checkout.bash <%= @project.repository %> <%= app.name %> <%= app.repository_name %>
21
+ RUN /var/docker/checkout.bash <%= app.name %> <%= app.repository_name %>
22
22
  WORKDIR /var/code/<%= app.name %>
23
23
  <%= include_event @database, :load_database_seeds %>
24
24
  <% end %>
@@ -26,6 +26,8 @@ WORKDIR /var/code/<%= app.name %>
26
26
  RUN rm -r /var/code
27
27
  WORKDIR /
28
28
 
29
+ <%= include_event @database, :cleanup %>
30
+
29
31
  ENV DATABASE_USERNAME ''
30
32
  ENV DATABASE_PASSWORD ''
31
33
  ENV DATABASE_NAME ''
@@ -1,10 +1,9 @@
1
1
  #! /bin/bash
2
2
 
3
- REPOSITORY_HOST=$1
4
- APP_NAME=$2
5
- REPOSITORY_NAME=$3
3
+ APP_NAME=$1
4
+ REPOSITORY_NAME=$2
6
5
 
7
6
  if [ ! -d /var/code/$APP_NAME/.git ]
8
7
  then
9
- git clone git@$REPOSITORY_HOST:$REPOSITORY_NAME /var/code/$APP_NAME
8
+ git clone $REPOSITORY_HOST/$REPOSITORY_NAME /var/code/$APP_NAME
10
9
  fi
@@ -28,6 +28,8 @@ ENV APP_PRIMARY <%= app.name == primary_app %>
28
28
  <%= include_event @server, :add_app_config %>
29
29
  <% end %>
30
30
 
31
+ <%= include_event @server, :cleanup %>
32
+
31
33
  RUN rm -r /var/docker
32
34
 
33
35
  ENV PROJECT ""
@@ -19,6 +19,11 @@ module RubyYacht::Plugins
19
19
 
20
20
  during(:add_project_landing) { run_script :ruby, 'add_project.rb' }
21
21
  during(:add_app_config) { run_script :ruby, 'add_app.rb' }
22
+
23
+ during(:cleanup) do
24
+ command 'apt-get remove -y ruby'
25
+ command 'apt-get autoremove -y'
26
+ end
22
27
  end
23
28
  end
24
29
  end
@@ -12,7 +12,7 @@ config_path = "./config/database.yml"
12
12
  username = ENV['DATABASE_USERNAME']
13
13
  password = ENV['DATABASE_PASSWORD']
14
14
  database = ENV['DATABASE_NAME']
15
- rails_env = ENV['RAILS_ENV']
15
+ rails_env = ENV['RAILS_ENV'] || 'development'
16
16
 
17
17
  database_config = {
18
18
  rails_env => {
@@ -30,6 +30,15 @@ File.open(config_path, "w") do |file|
30
30
  file.write(database_config.to_yaml)
31
31
  end
32
32
 
33
+ File.open('./config/secrets.yml', 'w') do |file|
34
+ secret_key_config = {
35
+ rails_env => {
36
+ 'secret_key_base' => ENV['SECRET_KEY_BASE']
37
+ }
38
+ }
39
+ file.write(secret_key_config.to_yaml)
40
+ end
41
+
33
42
  system "bundle install"
34
43
  tables = `mysql -uroot -e "SHOW TABLES" #{database}`
35
44
  if tables == ''
@@ -7,6 +7,6 @@ system "rake db:migrate"
7
7
  system "rails r Rails.cache.clear"
8
8
  system "rm -f tmp/pids/*"
9
9
 
10
- if ENV['RAILS_ENV'] != 'development'
10
+ if ENV['RAILS_ENV']
11
11
  system "rake assets:precompile"
12
12
  end