为什么Rails会混淆使用哪个Ruby?

时间:2011-12-05 18:29:59

标签: ruby-on-rails ruby ruby-on-rails-3

我有一个在Windows上开发的Rails应用程序。现在我将它带到VM上,以便在部署之前让它在那里运行。首先我运行了rails c并获得了

/usr/share/ruby-rvm/gems/ruby-1.9.3-p0/gems/activesupport-3.1.1/lib/active_support/dependencies.rb:240:in `require': cannot load such file -- openssl (LoadError)
    from /usr/share/ruby-rvm/gems/ruby-1.9.3-p0/gems/activesupport-3.1.1/lib/active_support/dependencies.rb:240:in `block in require'

好的,我用Rails 3 - no such file to load -- openssl解决了这个问题。

然后我又跑了rails c并得到了:

/usr/lib/ruby/gems/1.8/gems/activesupport-3.1.1/lib/active_support/dependencies.rb:234:in `load': /mnt/hgfs/AquaticKodiak/config/initializers/session_store.rb:3: syntax error, unexpected ':', expecting $end (SyntaxError)
...sion_store :cookie_store, key: '_mySiteName_session'
                              ^
    from /usr/lib/ruby/gems/1.8/gems/activesupport-3.1.1/lib/active_support/dependencies.rb:234:in `load'

对我来说,看起来当它遇到第一个错误时Rails使用1.9.3而在第二个错误中它使用的是1.8。我很确定key: 'siteName'在1.8中不起作用。这是否意味着我的宝石之一是1.8宝石?我做了bundle installbundle update,但没有帮助。

Rails是否对使用哪个版本的Ruby感到困惑?当我运行ruby -v时,我得到ruby 1.9.2p290 (2011-07-09 revision 32553) [i686-linux]。这似乎是正确的。

1 个答案:

答案 0 :(得分:4)

从路径看,您在VM上使用RVM和Linux。由于你按照openssl问题的说明进行操作,我猜你可能已经破坏了环境变量,因此禁用了RVM,因此回退到系统默认值1.8。

  1. 打开一个新终端,看看您是否仍然可以运行RVM rvm list。您应该看到可用ruby版本的列表,如果不这样,那么您的RVM环境变量就会搞乱,您需要修复它们(请参阅RVM文档)。

  2. 在项目目录中检查.rvmrc文件,并确认您使用的是系统上可用的ruby版本。

  3. 如果您使用rvm list中的红宝石版本列表,请选择您要使用的版本并执行rvm use ruby-1.9.x-pxxx,只需将x替换为您想要的版本。您还可以设置默认的ruby版本以用于RVM的default命令。再次,请参阅RVM文档。