Ruby 需要'some-gem' 在控制台中工作,而不是在 Eclipse 中?
Posted
技术标签:
【中文标题】Ruby 需要\'some-gem\' 在控制台中工作,而不是在 Eclipse 中?【英文标题】:Ruby require 'some-gem' works in console, not in Eclipse?Ruby 需要'some-gem' 在控制台中工作,而不是在 Eclipse 中? 【发布时间】:2012-09-29 17:47:48 【问题描述】:好吧,我正在尝试通过“机架”运行一个简单的 Web 服务器。所以这是我的程序:
require 'rubygems'
require 'rack'
class HelloWorld
def call(env)
[200, "Content-Type" => "text/html", ["Hello Rack!"]]
end
end
Rack::Handler::Mongrel.run HelloWorld.new, :Port => 9292
如果我在控制台中运行它,它工作正常。如果我在 Eclipse 中运行它,它会报错:
/Users/MY_SUPER_SECRET_USER/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- rack (LoadError)
from /Users/MY_SUPER_SECRET_USER/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from /Users/MY_SUPER_SECRET_USER/Sites/service/service.rb:2:in `<main>'
正在工作的那个是这样称呼的:
MY_SUPER_SECRET_USER@MacBook-Pro:~/Sites/service $ which ruby
/Users/MY_SUPER_SECRET_USER/.rvm/rubies/ruby-1.9.3-p194/bin/ruby
MY_SUPER_SECRET_USER@MacBook-Pro:~/Sites/service $ ruby service.rb
然后,当我尝试打开 localhost:9292
时,它会显示预期的“Hello Rack”代码。
我在 Mac OS X 10.8 上,通过 rvm 安装了 ruby 1.9.3(这一定很明显)。我的“机架”包已经安装了sudo gem install rack
如您所见,Eclipse 配置了相同的 ruby 可执行文件。任何建议都会有很大帮助!
【问题讨论】:
确保 Eclipse 运行在与控制台相同的 Ruby 环境中。在我看来,eclipse 使用的是一个 Ruby 环境,而 Eclipse 是另一个。那就是 Eclipse 应该运行 ruby-1.9.3-p194。 好吧,正如您从 Eclipse 错误日志中看到的那样 - 它正在运行 ruby-1.9.3-p194 :( 哦,搞混了,我敢打赌红宝石环境尝试通过 Eclipse 从红宝石代码运行puts system('gem list')
,看看你是否能看到宝石。如果输出与控制台中的输出不同,则说明它与 ruby env 不同。
【参考方案1】:
线
custom_require.rb:36:in `require': cannot load such file -- rack (LoadError)
意味着它无法找到您安装 rack gem 的位置。在互联网上阅读,我一次又一次地看到使用sudo
似乎不起作用。尝试安装它,看看是否可以修复它。
$ gem install rack
(无 sudo)
【讨论】:
【参考方案2】:我遇到了同样的问题,试图在 Eclipse 中要求它无法识别的 gem,即使一切似乎都配置正确(gem 已安装,Eclipse 指向正确的 Ruby 解释器等)。
我最终通过将 GEM_HOME
和 GEM_PATH
变量添加到“调试/运行配置”的“环境”选项卡来使其工作。
更详细的答案在这里:https://***.com/a/28419300/525338
【讨论】:
以上是关于Ruby 需要'some-gem' 在控制台中工作,而不是在 Eclipse 中?的主要内容,如果未能解决你的问题,请参考以下文章
Ruby gems 的问题(坏了?)试图让指南针在 npm 中工作
如何让这个 Javascript 字谜算法在 Ruby 中工作?