sml-rubber 0.9.7 → 0.9.8

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.9.7
1
+ 0.9.8
@@ -1,5 +1,7 @@
1
1
  # This is a sample Capistrano config file for rubber
2
2
 
3
+ set :rails_env, RUBBER_ENV
4
+
3
5
  on :load do
4
6
  set :application, rubber_cfg.environment.bind().app_name
5
7
  set :deploy_to, "/mnt/#{application}-#{RUBBER_ENV}"
@@ -247,36 +247,71 @@ namespace :rubber do
247
247
  def gem_helper(update=false)
248
248
  cmd = update ? "update" : "install"
249
249
 
250
- # when versions are provided for a gem, rubygems fails unless versions ae provided for all gems
251
- #
252
- # first do the gems that the user specified versions for
250
+
253
251
  opts = get_host_options('gems') do |gem_list|
254
252
  expanded_gem_list = []
255
253
  gem_list.each do |gem_spec|
256
254
  if gem_spec.is_a?(Array)
257
- expanded_gem_list << "#{gem_spec[0]} -v #{gem_spec[1]}"
255
+ expanded_gem_list << "#{gem_spec[0]}:#{gem_spec[1]}"
256
+ else
257
+ expanded_gem_list << gem_spec
258
258
  end
259
259
  end
260
260
  expanded_gem_list.join(' ')
261
261
  end
262
+
262
263
  if opts.size > 0
263
- sudo "gem #{cmd} $CAPISTRANO:VAR$ --no-rdoc --no-ri", opts do |ch, str, data|
264
- handle_gem_prompt(ch, data, str)
265
- end
266
- end
264
+ # Rubygems always installs even if the gem is already installed
265
+ # When providing versions, rubygems fails unless versions are provided for all gems
266
+ # This helper script works around these issues by installing gems only if they
267
+ # aren't already installed, and separates versioned/unversioned into two separate
268
+ # calls to rubygems
269
+ script = prepare_script 'gem_helper', <<-'ENDSCRIPT'
270
+ ruby - $@ <<-'EOF'
267
271
 
268
- # then do the gems without versions
269
- opts = get_host_options('gems') do |gem_list|
270
- expanded_gem_list = []
271
- gem_list.each do |gem_spec|
272
- if ! gem_spec.is_a?(Array)
273
- expanded_gem_list << gem_spec
272
+ gem_cmd = ARGV[0]
273
+ gems = ARGV[1..-1]
274
+ cmd = "gem #{gem_cmd} --no-rdoc --no-ri"
275
+
276
+ to_install = {}
277
+ to_install_ver = {}
278
+ # gem list passed in, possibly with versions, as "gem1 gem2:1.2 gem3"
279
+ gems.each do |gem_spec|
280
+ parts = gem_spec.split(':')
281
+ if parts[1]
282
+ to_install_ver[parts[0]] = parts[1]
283
+ else
284
+ to_install[parts[0]] = true
285
+ end
274
286
  end
275
- end
276
- expanded_gem_list.join(' ')
277
- end
278
- if opts.size > 0
279
- sudo "gem #{cmd} $CAPISTRANO:VAR$ --no-rdoc --no-ri", opts do |ch, str, data|
287
+
288
+ installed = {}
289
+ `gem list --local`.each do |line|
290
+ parts = line.scan(/(.*) \((.*)\)/).first
291
+ next unless parts && parts.size == 2
292
+ installed[parts[0]] = parts[1].split(",")
293
+ end
294
+
295
+ to_install.delete_if {|g, v| installed.has_key?(g) } if gem_cmd == 'install'
296
+ to_install_ver.delete_if {|g, v| installed.has_key?(g) && installed[g].include?(v) }
297
+
298
+ # when versions are provided for a gem, rubygems fails unless versions
299
+ # are provided for all gems so we need to do the two groups separately
300
+ if to_install.size > 0
301
+ gem_list = to_install.keys.join(' ')
302
+ system "#{cmd} #{gem_list}"
303
+ fail "Unable to install gems" if $?.exitstatus > 0
304
+ end
305
+ if to_install_ver.size > 0
306
+ gem_list = to_install_ver.collect {|g, v| "#{g} -v #{v}"}.join(' ')
307
+ system "#{cmd} #{gem_list}"
308
+ fail "Unable to install versioned gems" if $?.exitstatus > 0
309
+ end
310
+
311
+ 'EOF'
312
+ ENDSCRIPT
313
+
314
+ sudo "sh #{script} #{cmd} $CAPISTRANO:VAR$", opts do |ch, str, data|
280
315
  handle_gem_prompt(ch, data, str)
281
316
  end
282
317
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sml-rubber
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.7
4
+ version: 0.9.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Conway
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-08-21 00:00:00 -07:00
12
+ date: 2009-08-24 00:00:00 -07:00
13
13
  default_executable: vulcanize
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency