sml-rubber 0.9.7 → 0.9.8

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.
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