我想要求兩個寶石:json和rinku。紅寶石需要加載錯誤
我正在託管的Linux機器,並且沒有根/ sudo訪問,並結束了與被安裝在我的主目錄中的寶石:
-jailshell-3.2$ gem which json
/home/cygnetrc/ruby/gems/gems/json-1.7.3/lib/json.rb
-jailshell-3.2$ gem which rinku
/home/cygnetrc/ruby/gems/gems/rinku-1.5.1/lib/rinku.rb
Ruby的版本是:
-jailshell-3.2$ ruby --version
ruby 1.8.7 (2011-02-18 patchlevel 334) [x86_64-linux]
RubyGems的環境是:
- RUBYGEMS VERSION: 1.8.11
- RUBY VERSION: 1.8.7 (2011-02-18 patchlevel 334) [x86_64-linux]
- INSTALLATION DIRECTORY: /home/cygnetrc/ruby/gems
- RUBY EXECUTABLE: /usr/bin/ruby
- EXECUTABLE DIRECTORY: /home/cygnetrc/ruby/gems/bin
- RUBYGEMS PLATFORMS:
- ruby
- x86_64-linux
- GEM PATHS:
- /home/cygnetrc/ruby/gems
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :benchmark => false
- :backtrace => false
- :bulk_threshold => 1000
- "gempath" => []
- "gem" => "--remote --gen-rdoc --run-tests"
- "gemhome" => "/home/cygnetrc/ruby/gems"
- "rdoc" => "--inline-source --line-numbers"
- REMOTE SOURCES:
- http://rubygems.org/
-jailshell-3.2$ ruby -e 'puts $:'
/usr/lib/ruby/site_ruby/1.8
/usr/lib/ruby/site_ruby/1.8/x86_64-linux
/usr/lib/ruby/site_ruby
/usr/lib/ruby/vendor_ruby/1.8
/usr/lib/ruby/vendor_ruby/1.8/x86_64-linux
/usr/lib/ruby/vendor_ruby
/usr/lib/ruby/1.8
/usr/lib/ruby/1.8/x86_64-linux
.
我嘗試使用包括寶石:
-jailshell-3.2$ head gettweets.rb
#!/usr/bin/ruby
require 'rubygems'
require 'json'
require 'net/https'
require 'uri'
require 'rinku'
但是結了:
-jailshell-3.2$ ./gettweets.rb
/usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require': no such file to load -- json (LoadError)
from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `require'
from ./gettweets.rb:7
我看了看周圍廣泛,發現許多關於像RUBYOPTS各種不同的路徑變量的信息,但似乎沒有爲我工作。
使問題更加複雜化,我將從cron作業調用腳本,因此無論我使用哪種解決方案,都不能像我的.profile一樣依賴於更改我的主目錄中的任何內容。
我拉我的頭髮 - 任何人都可以幫忙嗎?
UPDATE:
感謝您的反饋!遵循你的一些建議,我閱讀了GEM_PATH
,如果我將其設置並將其作爲shell環境變量導出,它將起作用。但是,因爲我想從cron運行腳本,所以我需要能夠從腳本本身進行設置。我試圖做到這一點,但它似乎並沒有工作。還有什麼想法?
-jailshell-3.2$ ruby -I ~/ruby/gems ./gettweets.rb
/usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require': no such file to load -- json (LoadError)
from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `require'
from ./gettweets.rb:4
-jailshell-3.2$ head -20 ./gettweets.rb
#!/usr/bin/ruby
require 'rubygems'
require 'json'
require 'net/https'
require 'uri'
require 'rinku'
require 'optparse'
OptionParser.new do |o|
o.on('-d', "Turn on debugging messages") { |b| $debug = b }
o.on('-h', "Print this help screen") { puts o; exit }
o.parse!
end
puts "[*] Starting..." if $debug
# Setenv to catch json gem
ENV['GEM_PATH'] = '~/ruby/gems'
puts "ENV " + ENV['GEM_PATH'] if $debug
-jailshell-3.2$ export GEM_PATH=~/ruby/gems
-jailshell-3.2$ ruby ./gettweets.rb -d
[*] Starting...
ENV ~/ruby/gems
[*] Filepath = /home/cygnetrc/www/drupal/tweets.html
The queens of the women's single sculls - a look back at the Olympic history: http://t.co/d0YmNr40 #rowing #wr #London2012 #Olympics<br />
<em>Fri Jun 08 16:05:38</em><br />
1 week until #WRCMunich! NZL's Storm Uru will be racing the LM2x with @petertaylorNZ. Here, Uru talks about teamwork: http://t.co/NvjRgtwW<br />
<em>Fri Jun 08 14:38:02</em><br />
The 2012 @Paralympic Games Qualification Process is complete: http://t.co/D6DRG0bO #rowing #adaptive #ParalympiC#London2012 #wr<br />
<em>Fri Jun 08 13:23:14</em><br />
true
[*] Finished
-jailshell-3.2$
你看過http://stackoverflow.com/questions/901085/setting-ruby-load-path-externally – topek
你有'gempath'在'.gemrc'中定義了嗎?嘗試刪除它,看看它是否有幫助。 – Casper
幫你一個忙,並使用rvm。 – three