【问题标题】:Difficulties with Ruby version for Rails and activesupport-3.2.12Rails 和 activesupport-3.2.12 的 Ruby 版本的困难
【发布时间】:2013-03-03 23:34:07
【问题描述】:

我有一个构建在我的测试环境上的 rails 应用程序。

ruby -v  => 1.9.3p194    
rails -v => 3.2.12    
gem -v   => 1.8.23

在我希望部署到的服务器上,输出如下:

ruby -v  => 1.9.3p0
rails -v => 3.2.12
gem -v   => 1.8.15

我已开始全新安装服务器,但无法使服务器版本的 ruby​​ 和 gem 匹配。

另外,当我在服务器上运行 rails s 时(只是为了测试),这是失败的输出:

rails s
=> Booting WEBrick
=> Rails 3.2.12 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
Exiting
/var/lib/gems/1.8/gems/activesupport-3.2.12/lib/active_support/dependencies.rb:245:in `load': /var/www/New/confed ':', expecting kEND (SyntaxError)
  match '/about',   to: 'static_pages#about'
                       ^
/var/www/New/config/routes.rb:6: syntax error, unexpected ':', expecting kEND
  match '/cv',          to: 'static_pages#cv'
                           ^
        from /var/lib/gems/1.8/gems/activesupport-3.2.12/lib/active_support/dependencies.rb:245:in `load'
        from /var/lib/gems/1.8/gems/activesupport-3.2.12/lib/active_support/dependencies.rb:236:in `load_dependency'
        from /var/lib/gems/1.8/gems/activesupport-3.2.12/lib/active_support/dependencies.rb:245:in `load'
        from /var/lib/gems/1.8/gems/railties-3.2.12/lib/rails/application/routes_reloader.rb:40:in `load_paths'
        from /var/lib/gems/1.8/gems/railties-3.2.12/lib/rails/application/routes_reloader.rb:40:in `each'
        from /var/lib/gems/1.8/gems/railties-3.2.12/lib/rails/application/routes_reloader.rb:40:in `load_paths'
        from /var/lib/gems/1.8/gems/railties-3.2.12/lib/rails/application/routes_reloader.rb:16:in `reload!'
        from /var/lib/gems/1.8/gems/railties-3.2.12/lib/rails/application/routes_reloader.rb:26:in `updater'
        from /var/lib/gems/1.8/gems/activesupport-3.2.12/lib/active_support/file_update_checker.rb:78:in `call'
        from /var/lib/gems/1.8/gems/activesupport-3.2.12/lib/active_support/file_update_checker.rb:78:in `execute'
        from /var/lib/gems/1.8/gems/railties-3.2.12/lib/rails/application/routes_reloader.rb:27:in `updater'
        from /var/lib/gems/1.8/gems/railties-3.2.12/lib/rails/application/routes_reloader.rb:7:in `execute_if_updated'
        from /var/lib/gems/1.8/gems/railties-3.2.12/lib/rails/application/finisher.rb:66
        from /var/lib/gems/1.8/gems/railties-3.2.12/lib/rails/initializable.rb:30:in `instance_exec'
        from /var/lib/gems/1.8/gems/railties-3.2.12/lib/rails/initializable.rb:30:in `run'
        from /var/lib/gems/1.8/gems/railties-3.2.12/lib/rails/initializable.rb:55:in `run_initializers'
        from /var/lib/gems/1.8/gems/railties-3.2.12/lib/rails/initializable.rb:54:in `each'
        from /var/lib/gems/1.8/gems/railties-3.2.12/lib/rails/initializable.rb:54:in `run_initializers'
        from /var/lib/gems/1.8/gems/railties-3.2.12/lib/rails/application.rb:136:in `initialize!'
        from /var/lib/gems/1.8/gems/railties-3.2.12/lib/rails/railtie/configurable.rb:30:in `send'
        from /var/lib/gems/1.8/gems/railties-3.2.12/lib/rails/railtie/configurable.rb:30:in `method_missing'
        from /var/www/New/config/environment.rb:5
        from /var/www/New/config.ru:3:in `require'
        from /var/www/New/config.ru:3
        from /var/lib/gems/1.8/gems/rack-1.4.5/lib/rack/builder.rb:51:in `instance_eval'
        from /var/lib/gems/1.8/gems/rack-1.4.5/lib/rack/builder.rb:51:in `initialize'
        from /var/www/New/config.ru:0:in `new'
        from /var/www/New/config.ru:0

我查看了我的测试系统,但我没有 /var/lib/gems/1.8 我只有 /var/lib/gems/1.9.1

【问题讨论】:

  • 听起来您在目标系统上安装了多个版本的 ruby​​。您是否使用 rvm 或其他东西来管理多个版本?此外,ruby 1.9.3p0 已经很老了;您应该升级到最新版本,因为从那时起已经有很多安全更新。

标签: ruby-on-rails ruby-on-rails-3 rubygems ruby-on-rails-3.2 ubuntu-12.04


【解决方案1】:

从您的堆栈跟踪来看,实际上您运行的是 Ruby 1.8,它不支持简化的哈希语法 symbol: value,而 1.8 仅支持 :symbol => value

您可以使用rvmrbenv 来管理多个ruby 版本。 rbenv imo 在使用 Rails 时是两者中的佼佼者。


回答 Ryan 关于我为什么认为 rbenv > rvm 的问题是基于个人感受。我发现rbenv 易于使用,易于理解和概念化它的工作原理,而且我还没有遇到让我失望的情况。此外,源代码可读性很强,这使我的一次配置尝试变得容易。

【讨论】:

  • 为什么你认为 RVM 更好?请解释:)
  • @RyanBigg 我实际上并没有……那是一个错字。固定的! :D
  • 为什么你认为 rbenv 更好?请解释:D
  • 谢谢,我已经使用 RVM 安装了最新版本的 ruby​​,但它无法识别它已经安装。今天早上登录,它显示我安装的版本,我猜需要重启Putty?道具去找你解释堆栈跟踪,谢谢。
猜你喜欢
  • 2019-06-16
  • 1970-01-01
  • 2017-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多