【发布时间】:2014-09-07 07:13:48
【问题描述】:
我无法弄清楚为什么 rubygems 无法在以下代码的 require "sinatra" 行中找到 sinatra。我已经尝试编写 ruby 以确保已安装 sinatra..
红宝石
$:.push("/home/xxxx/ruby/gems")
require 'rubygems'
begin
gem "sinatra"
rescue LoadError
system("gem install sinatra")
Gem.clear_paths
end
require 'sinatra'
get "/" do
"Hello, world!"
end
错误 - 在线:需要 'sinatra'
/usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require': no such file to load -- sinatra (LoadError)
from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `require'
如果相关的话,我正在使用 bash 命令“ruby app.rb”通过 SSH 运行脚本。
Gem env 返回:(其中 /home/xxxx/ruby/gems 是 gem 的正确位置)
RubyGems Environment:
- RUBYGEMS VERSION: 1.8.25
- RUBY VERSION: 1.8.7 (2012-06-29 patchlevel 370) [x86_64-linux]
- INSTALLATION DIRECTORY: /home/xxxx/ruby/gems
- RUBY EXECUTABLE: /usr/bin/ruby
- EXECUTABLE DIRECTORY: /home/xxxx/ruby/gems/bin
- RUBYGEMS PLATFORMS:
- ruby
- x86_64-linux
- GEM PATHS:
- /home/xxxx/ruby/gems
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :benchmark => false
- :backtrace => false
- :bulk_threshold => 1000
- "gempath" => []
- "gem" => "--remote --gen-rdoc --run-tests"
- "rdoc" => "--inline-source --line-numbers"
- "gemhome" => "/home/xxxx/ruby/gems"
- REMOTE SOURCES:
- http://rubygems.org/
【问题讨论】:
-
如果您从 ruby 脚本安装 gem,您可能会将其安装在不同的文件夹中。你应该检查
/home/xxxx/ruby/gems看看它是否真的存在。 -
这个文件夹中有一个安装
/home/xxxx/ruby/gems/gems/sinatra-1.4.5但我刚刚卸载了它,脚本并没有替换它。我认为你是对的。$:.push("/home/xxxx/ruby/gems")肯定是在设置 gems 文件夹??有小费吗?谢谢 -
尝试从命令行运行
gem install sinatra,然后运行一个只需要sinatra的示例ruby脚本,并执行一个简单的get。 -
刚试过,脚本是:
$:.push("/home/xxxx/ruby/gems") require 'rubygems' require 'sinatra',我得到了同样的错误。 -
你在使用捆绑软件吗?