foreplay 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -14,6 +14,7 @@ Feature: Setup
14
14
  name: aruba
15
15
  repository: TODO Put the git repository path here
16
16
  user: TODO Put here the user to logon to the deployment server
17
+ password: TODO Supply a password or private key to connect to the server
17
18
  path: TODO Put here the path to deploy to on the deployment server
18
19
  port: 50000
19
20
  production:
data/lib/foreplay/cli.rb CHANGED
@@ -39,6 +39,7 @@ module Foreplay
39
39
  method_option :db_host, :aliases => '-h'
40
40
  method_option :db_user
41
41
  method_option :db_password
42
+ method_option :resque_redis
42
43
 
43
44
  def setup
44
45
  Foreplay::Setup.start
@@ -152,6 +152,12 @@ module Foreplay
152
152
  :before => ' ',
153
153
  :header => "#{environment}:",
154
154
  :path => 'config/' },
155
+ { :key => :resque,
156
+ :delimiter => ': ',
157
+ :suffix => '.yml',
158
+ :commentary => 'Building config/resque.yml',
159
+ :before => environment,
160
+ :path => 'config/' },
155
161
  { :command => 'bundle install --deployment --without development test',
156
162
  :commentary => 'Using bundler to install the required gems in deployment mode' },
157
163
  { :command => 'sudo ln -f `which foreman` /usr/bin/foreman || echo Using default version of foreman',
@@ -230,8 +236,7 @@ module Foreplay
230
236
  # Output from this step
231
237
  output = ''
232
238
  previous = '' # We don't need or want the final CRLF
233
-
234
- commands = build_commands step, instructions
239
+ commands = build_step step, instructions
235
240
 
236
241
  commands.each do |command|
237
242
  process = sh.execute command
@@ -258,7 +263,7 @@ module Foreplay
258
263
  else
259
264
  # Deployment check: just say what we would have done
260
265
  steps.each do |step|
261
- commands = build_commands step, instructions
266
+ commands = build_step step, instructions
262
267
 
263
268
  commands.each { |command| puts "#{INDENT * 2}#{command}" unless step[:silent] }
264
269
  end
@@ -267,41 +272,54 @@ module Foreplay
267
272
  output
268
273
  end
269
274
 
270
- def build_commands step, instructions
275
+ def build_step step, instructions
271
276
  puts "#{INDENT}#{(step[:commentary] || step[:command]).yellow}" unless step[:silent] == true
272
277
 
273
278
  # Each step can be (1) a command or (2) a series of values to add to a file
274
- if step.has_key? :key
275
- # Add values from the config file to a file on the remote machine
276
- key = step[:key]
277
- prefix = step[:prefix] || ''
278
- suffix = step[:suffix] || ''
279
- path = step[:path] || ''
280
- before = step[:before] || ''
281
- delimiter = step[:delimiter] || ''
282
- after = step[:after] || ''
283
-
284
- step[:silent] = true
285
- filename = '%s%s%s%s' % [path, prefix, key, suffix]
286
-
287
- if step.has_key?(:header)
288
- commands = ['echo "%s" > %s' % [step[:header], filename]]
289
- redirect = '>>'
279
+ if step.has_key?(:key)
280
+ if instructions.has_key?(step[:key])
281
+ build_commands step, instructions
290
282
  else
291
- commands = []
292
- redirect = '>'
283
+ []
293
284
  end
285
+ else
286
+ # ...or just execute the command specified
287
+ [step[:command]]
288
+ end
289
+ end
290
+
291
+ def build_commands step, instructions
292
+ # Add values from the config file to a file on the remote machine
293
+ key = step[:key]
294
+ prefix = step[:prefix] || ''
295
+ suffix = step[:suffix] || ''
296
+ path = step[:path] || ''
297
+ before = step[:before] || ''
298
+ delimiter = step[:delimiter] || ''
299
+ after = step[:after] || ''
300
+
301
+ step[:silent] = true
302
+ filename = '%s%s%s%s' % [path, prefix, key, suffix]
303
+
304
+ if step.has_key?(:header)
305
+ commands = ['echo "%s" > %s' % [step[:header], filename]]
306
+ redirect = '>>'
307
+ else
308
+ commands = []
309
+ redirect = '>'
310
+ end
294
311
 
312
+ if instructions[key].kind_of?(Hash)
295
313
  instructions[key].each do |k, v|
296
314
  commands << 'echo "%s%s%s%s%s" %s %s' % [before, k, delimiter, v, after, redirect, filename]
297
315
  redirect = '>>'
298
316
  end
299
-
300
- commands
301
317
  else
302
- # ...or just execute the command specified
303
- [step[:command]]
318
+ commands << 'echo "%s%s%s%s" %s %s' % [before, delimiter, instructions[key], after, redirect, filename]
319
+ redirect = '>>'
304
320
  end
321
+
322
+ commands
305
323
  end
306
324
 
307
325
  def explanatory_text(hsh, key)
@@ -20,6 +20,7 @@ module Foreplay
20
20
  class_option :db_host, :aliases => '-h'
21
21
  class_option :db_user
22
22
  class_option :db_password
23
+ class_option :resque_redis
23
24
 
24
25
  def self.source_root
25
26
  File.dirname(__FILE__)
@@ -64,15 +64,17 @@
64
64
  # key: value Values will go into the .env file as key=value
65
65
  # foreman: Role level Contents of the .foreman file
66
66
  # key: value
67
+ # resque: Role level Contents of the resque.yml file for configuring a central redis
68
+ # server for an environment, e.g. production: redis://mydom.com:6379
67
69
  #
68
70
  defaults:
69
71
  name: <%= @options.name? ? @options.name : 'TODO Put the app name here' %>
70
72
  repository: <%= @options.repository? ? @options.repository : 'TODO Put the git repository path here' %>
71
- user: <%= @options.user? ? @options.user : 'TODO Put here the user to logon to the deployment server' %><%= @options.password? ? "\n password: #{@options.password}" : '' %><%= @options.keyfile? ? "\n keyfile: #{@options.keyfile}" : '' %><%= @options.private_key? ? "\n private_key: #{@options.private_key}" : '' %>
73
+ user: <%= @options.user? ? @options.user : 'TODO Put here the user to logon to the deployment server' %><%= @options.password? ? "\n password: #{@options.password}" : '' %><%= @options.keyfile? ? "\n keyfile: #{@options.keyfile}" : '' %><%= @options.private_key? ? "\n private_key: #{@options.private_key}" : '' %><%= !@options.password? && !@options.private_key? && !@options.keyfile? ? "\n password: TODO Supply a password or private key to connect to the server" : '' %>
72
74
  path: <%= @options.path? ? @options.path : 'TODO Put here the path to deploy to on the deployment server' %>
73
75
  port: <%= @options.port %>
74
76
  production:
75
- defaults:
77
+ defaults:<%= @options.resque_redis? ? "\n resque: #{@options.resque_redis}" : '' %>
76
78
  database:
77
79
  adapter: <%= @options.db_adapter %>
78
80
  encoding: <%= @options.db_encoding %>
@@ -1,3 +1,3 @@
1
1
  module Foreplay
2
- VERSION = "0.0.5"
2
+ VERSION = "0.0.6"
3
3
  end
@@ -70,6 +70,7 @@ describe Foreplay::Deploy do
70
70
  'rvm rvmrc warning ignore 50000',
71
71
  'cd 50000',
72
72
  'if [ -f .ruby-version ] ; then rvm install `cat .ruby-version` ; else echo "No .ruby-version file found" ; fi',
73
+ 'mkdir -p config',
73
74
  'echo "RAILS_ENV=production" > .env',
74
75
  'echo "concurrency: web=1,worker=0,scheduler=0" > .foreman',
75
76
  'echo "app: foreplay-50000" >> .foreman',
@@ -112,4 +113,10 @@ describe Foreplay::Deploy do
112
113
  `foreplay setup -r git@github.com:Xenapto/foreplay.git -s web.example.com -f apps/%a -u fred -k "top secret private key"`
113
114
  Foreplay::Deploy.start([:deploy, 'production', ''])
114
115
  end
116
+
117
+ it "should add Redis details for Resque" do
118
+ `rm -f config/foreplay.yml`
119
+ `foreplay setup -r git@github.com:Xenapto/foreplay.git -s web.example.com -f apps/%a -u fred --resque-redis "redis://localhost:6379"`
120
+ Foreplay::Deploy.start([:deploy, 'production', ''])
121
+ end
115
122
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: foreplay
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-11-17 00:00:00.000000000 Z
12
+ date: 2013-12-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
@@ -250,7 +250,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
250
250
  version: '0'
251
251
  segments:
252
252
  - 0
253
- hash: 3647688978766977844
253
+ hash: -463785199640223195
254
254
  required_rubygems_version: !ruby/object:Gem::Requirement
255
255
  none: false
256
256
  requirements:
@@ -259,7 +259,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
259
259
  version: '0'
260
260
  segments:
261
261
  - 0
262
- hash: 3647688978766977844
262
+ hash: -463785199640223195
263
263
  requirements: []
264
264
  rubyforge_project:
265
265
  rubygems_version: 1.8.25