2012-05-31 54 views
3

使用通过RVM和宝石版本1.8.24 JRuby的1.6.7我创建包含的Gemfile一个新项目:JRuby的 “没有这样的文件来加载”

source 'http://rubygems.org' 
gem 'google-api-client' 

和main.rb的:

require 'google/api_client' 

gem install bundler 
bundle install 
gem list 

我得到

addressable (2.2.8) 
autoparse (0.3.1) 
bouncy-castle-java (1.5.0146.1) 
bundler (1.1.4) 
extlib (0.9.15) 
faraday (0.8.1, 0.7.6) 
ffi (1.0.11 java) 
google-api-client (0.4.3) 
jruby-launcher (1.0.14 java) 
jruby-openssl (0.7.7) 
json (1.7.3 java) 
jwt (0.1.4) 
launchy (2.1.0 java) 
multi_json (1.3.6) 
multipart-post (1.1.5) 
rack (1.4.1) 
rake (0.9.2.2) 
rubygems-bundler (1.0.2) 
rubygems-update (1.8.24, 1.7.2) 
rvm (1.11.3.3) 
signet (0.3.4) 
spoon (0.0.1) 

但是当我运行红宝石main.rb的,它导致一个错误:

LoadError: no such file to load -- google/api_client 
    require at org/jruby/RubyKernel.java:1033 
    (root) at main.rb:1 

在MRI一切似乎是工作的罚款。这个问题似乎并不局限于任何特定的宝石。

有人可以帮助我吗?

回答

7

除非你在你的环境中有JRUBY_OPTS=--1.9,或者你通过--1.9标志在命令行中,JRuby的将默认为1.8模式,这意味着你必须明确在main.rbrequire 'rubygems'加载你的宝石之前。

+0

感谢您的编辑建议。但是,一般来说,如果你打算使用多个Ruby虚拟机(你提到过MRI),那么最好强制JRuby的'1.9'模式,而不是增加显式的'require'。 1.8和1.9之间还有其他的区别可能会在将来引发你的注意。 –

+3

以JRuby 1.7('rvm install jruby-1.7.0.preview1')开头,它默认为** 1.9 **,或者你可以用'--1.9'来安装jruby,它也会切换它,不需要'JRUBY_OPTS = - 1.9'。 – mpapis

相关问题