First off, I am REALLY new at coding, only CMD 10 years ago and ruby for 5 days now. So I am making my very first script and the only goal for it is for me to test and learn DEF and TRUE/FALSE choices
Like like this:
def cls
system "clear" or "cls"
end
or
def s2
sleep 2
end
My question:
I want my script to check if a particular GEM is installed, so i made the code. but i cant figure out how to make the script REQUIRE the particular Gem IF installed. or make the script INSTALL a Gem IF not installed OR at least say "sorry no GEM, EXIT" and then end script.
def checkGemColorize(gemName, versionLimit=nil)
isAvailable = false
begin
if versionLimit == nil
gem gemName
puts "Yes the GEM is installed"
#the script should put in require 'colorize' if installed
else
gem gemName, versionLimit
puts "Yes the GEM is installed with correct version number"
#also if version number is used.
end
isAvailable = true
rescue LoadError
end
isAvailable
end
sleep 0.5
#testing IF TRUE on colorize
puts "checking for colorize GEM"
sleep 0.5
puts checkGemColorize('colorize')
sleep 1
#testing IF TRUE version number
puts "checking for colorize version number"
sleep 0.5
puts checkGemColorize('colorize', '>=0.6')
sleep 1
#testing IF FALSE version number is shown when input is higher
puts "checking false version number"
sleep 0.5
puts checkGemColorize('colorize', '>=1.2')
sleep 1
#testing IF FALSE parameter
puts "a fake gem for testing FALSE"
sleep 0.5
puts checkGemColorize('not_colorize')
sleep 1
puts "testing"
sleep 1
puts "test".red
This is the working code thanks to K M Rakibul Islam
def checkGemColorize(gemName, versionLimit=nil)
isAvailable = false
begin
if versionLimit == nil
gem_present = gem gemName # this will return true if the gem is present
if gem_present
puts "Yes the GEM is installed"
require gemName # here you are requiring the gem
puts "#{gemName} GEM is required just now"
end
else
gem gemName, versionLimit
puts "Yes the GEM is installed with correct version number"
#also if version number is used.
end
isAvailable = true
rescue LoadError
# I added this block of code to install the gem when it's missing
puts "#{gemName} is missing, Installing now...."
`gem install #{gemName}` # installing the missing gem
puts "installed the #{gemName} gem just now!"
isAvailable = true
end
isAvailable
end
You can require the gem if it's present and also install the gem if it's not already installed the following way (Look for the comments in the code):
def checkGemColorize(gemName, versionLimit=nil)
isAvailable = false
begin
if versionLimit == nil
gem_present = gem gemName # this will return true if the gem is present
if gem_present
puts "Yes the GEM is installed"
require gemName # here you are requiring the gem
puts "#{gemName} GEM is required just now"
end
else
gem gemName, versionLimit
puts "Yes the GEM is installed with correct version number"
#also if version number is used.
end
isAvailable = true
rescue LoadError
# I added this block of code to install the gem when it's missing
puts "#{gemName} is missing, Installing now...."
`gem install #{gemName}` # installing the missing gem
puts "installed the #{gemName} gem just now!"
isAvailable = true
end
isAvailable
end
#testing IF TRUE on colorize
puts "checking for colorize GEM"
puts checkGemColorize('colorize')