Ruby需要'some-gem'在控制台中工作,而不是在Eclipse中?

时间:2012-10-09 11:43:15

标签: ruby eclipse macos gem rvm

好吧,我试图通过" rack"来运行一个简单的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时,它会显示预期的&#34; Hello Rack&#34;代码。

我在Mac OS X 10.8上,通过rvm安装了ruby 1.9.3(这一点很明显)。我的&#34;机架&#34;包已安装sudo gem install rack

正如您所看到的,Eclipse配置了相同的ruby可执行文件。任何建议都会有很大的帮助!

2 个答案:

答案 0 :(得分:0)

该行

custom_require.rb:36:in `require': cannot load such file -- rack (LoadError)

表示无法找到您安装机架宝石的位置。在互联网上阅读,我一次又一次地使用sudo看起来似乎不起作用。尝试安装它,看看是否修复它。

$ gem install rack(没有sudo)

答案 1 :(得分:0)

我遇到了同样的问题,尝试在Eclipse中要求gems它没有认识到,即使一切似乎都配置正确(安装了宝石,Eclipse指向正确的Ruby解释器等)

我最终通过将GEM_HOMEGEM_PATH变量添加到Debug / Run Configurations的Environment选项卡来使其工作。

更详细的答案:https://stackoverflow.com/a/28419300/525338