我有一个在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 install
和bundle update
,但没有帮助。
Rails是否对使用哪个版本的Ruby感到困惑?当我运行ruby -v
时,我得到ruby 1.9.2p290 (2011-07-09 revision 32553) [i686-linux]
。这似乎是正确的。
答案 0 :(得分:4)
从路径看,您在VM上使用RVM和Linux。由于你按照openssl问题的说明进行操作,我猜你可能已经破坏了环境变量,因此禁用了RVM,因此回退到系统默认值1.8。
打开一个新终端,看看您是否仍然可以运行RVM rvm list
。您应该看到可用ruby版本的列表,如果不这样,那么您的RVM环境变量就会搞乱,您需要修复它们(请参阅RVM文档)。
在项目目录中检查.rvmrc
文件,并确认您使用的是系统上可用的ruby版本。
如果您使用rvm list
中的红宝石版本列表,请选择您要使用的版本并执行rvm use ruby-1.9.x-pxxx
,只需将x替换为您想要的版本。您还可以设置默认的ruby版本以用于RVM的default
命令。再次,请参阅RVM文档。