From ada13b58ed6e7969d1cf85e5a30fec180d5d402f Mon Sep 17 00:00:00 2001 From: ddux Date: Sun, 11 Aug 2013 22:02:25 -0500 Subject: [PATCH] --source option doesn't work with local gemfiles, add an option for local files and don't use the --source option when trying to install a local gemfile --- libraries/provider_rbenv_rubygems.rb | 21 ++++++++++++++++++--- resources/gem.rb | 2 ++ 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/libraries/provider_rbenv_rubygems.rb b/libraries/provider_rbenv_rubygems.rb index 616d087..45ec0ad 100644 --- a/libraries/provider_rbenv_rubygems.rb +++ b/libraries/provider_rbenv_rubygems.rb @@ -60,13 +60,28 @@ def remove_package(name, version) true end + + def has_remote_source? + @new_resource.source && !@new_resource.local_file + end + + def source_text + " --source=#{ @new_resource.source } --source=http://rubygems.org" + end + + def version_option(version=nil) + (version.nil? || version.empty?) ? "" : " -v \"#{version}\"" + end + + def force_option + " -f" if @new_resource.force + end def install_via_gem_command(name, version = nil) - src = @new_resource.source && " --source=#{@new_resource.source} --source=http://rubygems.org" - version_option = (version.nil? || version.empty?) ? "" : " -v \"#{version}\"" + src = source_text if has_remote_source? shell_out!( - "#{gem_binary_path} install #{name} -q --no-rdoc --no-ri #{version_option} #{src}#{opts}", + "#{gem_binary_path} install #{name} -q --no-rdoc --no-ri #{version_option(version)} #{src}#{force_option}#{opts}", :user => node[:rbenv][:user], :group => node[:rbenv][:group], :env => { diff --git a/resources/gem.rb b/resources/gem.rb index a33092b..afd0a3a 100644 --- a/resources/gem.rb +++ b/resources/gem.rb @@ -25,8 +25,10 @@ attribute :ruby_version, :kind_of => String attribute :version, :kind_of => String attribute :source, :kind_of => String +attribute :local_file, :default => nil attribute :gem_binary, :kind_of => String attribute :response_file, :kind_of => String +attribute :force, :default => false attribute :options, :kind_of => Hash def initialize(*args)