Skip to content

Commit

Permalink
Allow no default RVM ruby (i.e. use system ruby). Closes #14
Browse files Browse the repository at this point in the history
  • Loading branch information
fnichol committed May 2, 2011
1 parent 5550f89 commit b17045b
Show file tree
Hide file tree
Showing 4 changed files with 49 additions and 26 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ built as a pre-requisite. The value can also contain a gemset in the form of
found when running `rvm list known`.

The default is `ruby-1.9.2-p180`. To disable a default ruby from being
installed, see the `install_rubies` attribute.
set, use an empty string (`""`) or a value of `"system"`.

## `rubies`

Expand Down
28 changes: 25 additions & 3 deletions libraries/helpers.rb
Original file line number Diff line number Diff line change
Expand Up @@ -138,19 +138,41 @@ def current_ruby_default
# @param [String, #to_s] the fully qualified RVM ruby string
# @return [Boolean] is this ruby the default one?
def ruby_default?(rubie)
return false unless ruby_string_sane?(rubie)

current_default = current_ruby_default
return false if current_default.nil?

if current_default.nil?
if rubie == "system"
return true
else
return false
end
end

return false unless ruby_string_sane?(rubie)
current_default.start_with?(rubie)
end

##
# Determines whether or not the given ruby could be considered the system
# ruby.
#
# @param [String, #to_s] an RVM ruby string
# @return [Boolean] is this ruby string the a system ruby?
def system_ruby?(rubie)
return true if rubie.nil? # nil should be system
return true if rubie.empty? # an empty string should be system
return true if rubie == "system" # keyword system should be system
return false # anything else does not represent system
end

##
# Determines whether or not and ruby/gemset environment exists
#
# @param [String, #to_s] the fully qualified RVM ruby string
# @return [Boolean] does this environment exist?
def env_exists?(ruby_string)
return true if system_ruby?(ruby_string)

rubie = select_ruby(ruby_string)
gemset = select_gemset(ruby_string)

Expand Down
3 changes: 2 additions & 1 deletion providers/default_ruby.rb
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,11 @@

action :create do
ruby_string = new_resource.ruby_string
ruby_string = "system" if system_ruby?(ruby_string)
rubie = select_ruby(ruby_string)
gemset = select_gemset(ruby_string)

if ruby_unknown?(rubie)
if rubie != "system" && ruby_unknown?(rubie)
Chef::Log.warn("rvm_default_ruby[#{rubie}] is either not fully " +
"qualified or not known . Use `rvm list known` to get a full list.")
elsif ruby_default?(ruby_string)
Expand Down
42 changes: 21 additions & 21 deletions recipes/default.rb
Original file line number Diff line number Diff line change
Expand Up @@ -36,38 +36,38 @@

include_recipe "rvm::system"

if node[:rvm][:install_rubies] == "enable"
unless node[:rvm][:install_rubies] == "disable"
# set a default ruby
rvm_default_ruby node[:rvm][:default_ruby]

# install additional rubies
node[:rvm][:rubies].each do |rubie|
rvm_ruby rubie
end
end

# install global gems
node[:rvm][:global_gems].each do |gem|
rvm_gem gem[:name] do
global true
version gem[:version] if gem[:version]
action gem[:action] if gem[:action]
options gem[:options] if gem[:options]
source gem[:source] if gem[:source]
# install global gems
node[:rvm][:global_gems].each do |gem|
rvm_gem gem[:name] do
global true
version gem[:version] if gem[:version]
action gem[:action] if gem[:action]
options gem[:options] if gem[:options]
source gem[:source] if gem[:source]
end
end
end

# install additional gems
node[:rvm][:gems].each_pair do |rstring, gems|
rvm_environment rstring
# install additional gems
node[:rvm][:gems].each_pair do |rstring, gems|
rvm_environment rstring

gems.each do |gem|
rvm_gem gem[:name] do
ruby_string rstring
version gem[:version] if gem[:version]
action gem[:action] if gem[:action]
options gem[:options] if gem[:options]
source gem[:source] if gem[:source]
gems.each do |gem|
rvm_gem gem[:name] do
ruby_string rstring
version gem[:version] if gem[:version]
action gem[:action] if gem[:action]
options gem[:options] if gem[:options]
source gem[:source] if gem[:source]
end
end
end
end

0 comments on commit b17045b

Please # to comment.