まず第一に、私はコーディングが本当に初めてで、10年前にCMDだけで、現在5日間ルビーです。だから私は最初のスクリプトを作成しています。その唯一の目標は、DEF と TRUE/FALSE の選択をテストして学習することです。
このように:
def cls
system "clear" or "cls"
end
また
def s2
sleep 2
end
私の質問:
特定のGEMがインストールされているかどうかをスクリプトで確認したいので、コードを作成しました。しかし、スクリプトに特定のGem IFがインストールされていることを要求する方法がわかりません。または、スクリプトをGemにインストールするか、インストールされていないか、少なくとも「申し訳ありませんがGEMを終了してください」と言ってから、スクリプトを終了します。
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
これは KM 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