這是一個非常基本的紅寶石寶石問題。我很熟悉編寫這樣簡單的ruby腳本:獨立紅寶石腳本中的紅寶石
#!/usr/bin/ruby
require 'time'
t = Time.at(123)
puts t
現在我想在我的腳本中使用自己的ruby gem。在我的rails項目中,我可以簡單地require 'my_gem'
。但是,這不適用於獨立腳本。 在獨立的ruby腳本中使用我自己的寶石的最佳方式是什麼?
這是一個非常基本的紅寶石寶石問題。我很熟悉編寫這樣簡單的ruby腳本:獨立紅寶石腳本中的紅寶石
#!/usr/bin/ruby
require 'time'
t = Time.at(123)
puts t
現在我想在我的腳本中使用自己的ruby gem。在我的rails項目中,我可以簡單地require 'my_gem'
。但是,這不適用於獨立腳本。 在獨立的ruby腳本中使用我自己的寶石的最佳方式是什麼?
你應該能夠簡單地直接要求它在最新版本的Ruby。
# optional, also allows you to specify version
gem 'chronic', '~>0.6'
# just require and use it
require 'chronic'
puts Chronic::VERSION # yields "0.6.7" for me
如果你仍然對紅寶石1.8(不需要默認RubyGems的),你必須明確地把你上面的嘗試這條線來加載寶石:
require 'rubygems'
另外,您可以調用標記爲-rubygems
的Ruby解釋器,這將具有相同的效果。
參見:
我不知道如果我理解正確你的問題,但也許你沒有寶石,即使你寫它(你是一個初學者,所以也許你誤解了寶石的概念)。
只是可以肯定:你必須爲你的創業板gemspec?如果沒有,那麼你就沒有寶石,只有一個腳本。
如果想讓其他腳本里面自己的腳本,你可能只是做:
require 'my_script'
使用Ruby 1.8這工作得很好,如果my_script.rb
是在同一文件夾作爲你的主腳本。隨着紅寶石1.9 +你可以使用:
require_relative 'my_script'
在這種情況下沒有必要的寶石。
你可以使用這樣的事情。它會安裝寶石,如果它尚未安裝:
def load_gem(name, version=nil)
# needed if your ruby version is less than 1.9
require 'rubygems'
begin
gem name, version
rescue LoadError
version = "--version '#{version}'" unless version.nil?
system("gem install #{name} #{version}")
Gem.clear_paths
retry
end
require name
end
load_gem 'your_gem'
安裝寶石與下面的東西應該工作。請注意是否應該將寶石安裝爲系統紅寶石或用戶的一部分。
#!/usr/bin/env ruby
require 'rubygems'
def install_gem(name, version=Gem::Requirement.default)
begin
gem name, version
rescue LoadError
print "ruby gem '#{name}' not found, " <<
"would you like to install it (y/N)? : "
answer = gets
if answer[0].downcase.include? "y"
Gem.install name, version
else
exit(1)
end
end
end
# any of the following will work...
install_gem 'activesupport'
install_gem 'activesupport', '= 4.2.5'
install_gem 'activesupport', '~> 4.2.5'
# require as normal (since not all gems install & require with same name) ...
require 'active_support/all'
...
這是一個寶石。它是更大的鐵路項目的一部分。我寧願不加載整個rails項目只是爲了在我的腳本中使用這個gem。 – SundayMonday 2012-02-13 18:09:53