Ruby on rails 为什么Rails会对使用哪个Ruby感到困惑?

Ruby on rails 为什么Rails会对使用哪个Ruby感到困惑?,ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,我有一个在Windows上开发的Rails应用程序。现在我把它带到一个虚拟机上,在部署它之前让它在那里运行。首先,我运行了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/s

我有一个在Windows上开发的Rails应用程序。现在我把它带到一个虚拟机上,在部署它之前让它在那里运行。首先,我运行了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 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。我很确定
键:'siteName'
在1.8中不起作用。这是否意味着我的宝石之一是1.8宝石?我已经完成了
捆绑包安装
捆绑包更新
,但没有任何帮助


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

从路径上看,您似乎正在虚拟机上使用和Linux。由于您遵循了openssl问题的说明,我猜您可能已经损坏了环境变量,因此禁用了RVM,从而返回到系统默认值1.8

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

  • 在项目目录中检查
    .rvmrc
    文件,并验证您使用的是系统上可用的ruby版本

  • 如果您使用
    rvm list
    中的ruby版本列表,请选择您想要使用的版本并执行
    rvm use ruby-1.9.x-pxxx
    ,只需将x替换为您想要的版本即可。您还可以将默认ruby版本设置为与RVM的
    default
    命令一起使用。同样,请参见RVM文档


  • 从路径上看,您似乎正在VM上使用和Linux。由于您遵循了openssl问题的说明,我猜您可能已经损坏了环境变量,因此禁用了RVM,从而返回到系统默认值1.8

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

  • 在项目目录中检查
    .rvmrc
    文件,并验证您使用的是系统上可用的ruby版本

  • 如果您使用
    rvm list
    中的ruby版本列表,请选择您想要使用的版本并执行
    rvm use ruby-1.9.x-pxxx
    ,只需将x替换为您想要的版本即可。您还可以将默认ruby版本设置为与RVM的
    default
    命令一起使用。同样,请参见RVM文档


  • 听起来你有两个Ruby版本。尝试直接从1.9路径运行rails
    /usr/share/ruby rvm/gems/ruby-1.9.3-p0/bin/rails-c
    值得一试,我得到了
    'report\u activate\u error':找不到RubyGem rails(>=0)
    但是当我列出我的gems rails 3.1.3时,听起来你有两个ruby版本。尝试直接从1.9路径运行rails
    /usr/share/ruby-rvm/gems/ruby-1.9.3-p0/bin/rails-c
    值得一试,我得到了
    'report\u activate\u error':找不到RubyGem-rails(>=0)
    但是当我列出我的gems-rails 3.1.3时,它只显示了一个版本。rvmrc在项目目录中不存在——可能是因为应用程序最初不是在linux上创建的。我已经完成了设置默认值。在这一点上,我认为这个虚拟机有很大的问题,所以我将从一个新的开始,只安装一种风格的Ruby。我从中得到的教训是:使用虚拟机,如果出现问题,请删除实例并重新开始。我最终还是让它工作了,但发现让Rails在Linux上运行充满了陷阱,可能会把事情搞得一团糟。rvmrc在项目目录中不存在——可能是因为应用程序最初不是在linux上创建的。我已经完成了设置默认值。在这一点上,我认为这个虚拟机有很大的问题,所以我将从一个新的开始,只安装一种风格的Ruby。我从中得到的教训是:使用虚拟机,如果出现问题,请删除实例并重新开始。我最终还是让它工作了,但我发现让Rails在Linux上运行充满了陷阱,可能会把事情搞得一团糟。