【问题标题】:My rails project fails after upgrading to ruby 1.9.2 on OS X在 OS X 上升级到 ruby​​ 1.9.2 后,我的 rails 项目失败
【发布时间】:2011-02-05 12:55:44
【问题描述】:

我已按照本教程将 ruby​​ 升级到 1.9.2、rubygems 1.5.0 并安装了最新的 rails 3.0.3:

http://hivelogic.com/articles/ruby-rails-mongrel-mysql-osx

但现在我现有的项目不再有效。如果我做一个“ruby script/about”,我会得到这个:

<internal:lib/rubygems/custom_require>:29:in `require': no such file to load -- /Users/sneigaard/work/rails/myproject/config/../vendor/rails/railties/lib/initializer (LoadError)
    from <internal:lib/rubygems/custom_require>:29:in `require'
    from /Users/sneigaard/work/rails/myproject/config/boot.rb:45:in `load_initializer'
    from /Users/sneigaard/work/rails/myproject/config/boot.rb:38:in `run'
    from /Users/sneigaard/work/rails/myproject/config/boot.rb:11:in `boot!'
    from /Users/sneigaard/work/rails/myproject/config/boot.rb:110:in `<top (required)>'
    from <internal:lib/rubygems/custom_require>:29:in `require'
    from <internal:lib/rubygems/custom_require>:29:in `require'
    from script/about:2:in `<main>'

如果我运行“mongrel_rails start”,我会收到此错误:

** Starting Mongrel listening at 0.0.0.0:3000
** Starting Rails with development environment...
/Library/Ruby/Site/1.8/rubygems/custom_require.rb:29:in `gem_original_require': no such file to load -- /Users/sneigaard/work/rails/myproject/config/../vendor/rails/railties/lib/initializer (LoadError)
    from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:29:in `require'
    from /Users/sneigaard/work/rails/myproject/config/boot.rb:45:in `load_initializer'
    from /Users/sneigaard/work/rails/myproject/config/boot.rb:38:in `run'
    from /Users/sneigaard/work/rails/myproject/config/boot.rb:11:in `boot!'
    from /Users/sneigaard/work/rails/myproject/config/boot.rb:110
    from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:29:in `gem_original_require'
    from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:29:in `require'
    from /Users/sneigaard/work/rails/myproject/config/environment.rb:7
    from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:29:in `gem_original_require'
    from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:29:in `require'
    from /Library/Ruby/Gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel/rails.rb:147:in `rails'
    from /Library/Ruby/Gems/1.8/gems/mongrel-1.1.5/bin/mongrel_rails:113:in `cloaker_'
    from /Library/Ruby/Gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel/configurator.rb:149:in `call'
    from /Library/Ruby/Gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel/configurator.rb:149:in `listener'
    from /Library/Ruby/Gems/1.8/gems/mongrel-1.1.5/bin/mongrel_rails:99:in `cloaker_'
    from /Library/Ruby/Gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel/configurator.rb:50:in `call'
    from /Library/Ruby/Gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel/configurator.rb:50:in `initialize'
    from /Library/Ruby/Gems/1.8/gems/mongrel-1.1.5/bin/mongrel_rails:84:in `new'
    from /Library/Ruby/Gems/1.8/gems/mongrel-1.1.5/bin/mongrel_rails:84:in `run'
    from /Library/Ruby/Gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel/command.rb:212:in `run'
    from /Library/Ruby/Gems/1.8/gems/mongrel-1.1.5/bin/mongrel_rails:281
    from /usr/bin/mongrel_rails:19:in `load'
    from /usr/bin/mongrel_rails:19

在脚本/服务器中我有这个:

#!/usr/bin/env ruby
require File.expand_path('../../config/boot', __FILE__)
require 'commands/server'

我已经搜索并搜索了网络,但我无法弄清楚,我的项目被卡住了:(请帮助我。

谢谢
索伦

【问题讨论】:

  • 你真的需要 1.9.2 吗?我确实使用 Rails 3,并使用 rvm 设置了 Ruby 企业版(我强烈推荐)

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


【解决方案1】:

它是rails server 会吐出同样的错误吗?您似乎在 rails 3 中使用 rails 2 命令。此外,您的所有 gem 是否都加载到 1.9.2 中?切换红宝石时必须重新加载所有内容。

【讨论】:

  • rails server
    给了我一个选项列表,比如创建一个新的 rails 应用程序。当您说重新加载所有内容时,我该怎么做?
  • 哦,我看到“rails server”启动了 webrick,它在我的设置中什么也没做,而且从来没有,但我曾经像这样“ruby script/server webrick”运行 webrick,是的,它给了我同样的错误。
  • 你的 ruby​​ 仍然是 1.8.x。使用 RVM,然后安装 ruby​​ 1.9.2,然后再次安装所有 gem,或者在正确升级到 1.9.2 后运行bundle。当您运行 rails server 时,它会起作用。
  • 我现在已经安装了 rvm,但是如何再次安装我所有的 gem?
  • 如果你使用的是 rails 3,你所有的 gem 都在 RailsRoot 文件夹的 Gemfile 中,所以 /your/path/to/appname 。要安装您的应用程序将使用的所有 gem,只需打开控制台并输入 bundle 。如果您使用的是 rails 2.3.x 项目,请转到 Rails 根目录并在控制台中输入 rake gems:install
【解决方案2】:

你的 ruby​​ 配置有一些错误,如果你输入

which ruby
gem environment

ruby -v

都是相干的?

我会建议使用RVM 设置好的文档非常简单,对您的业务很有用。

您的项目似乎仍在 rails 2.3.* 而不是 3.0.* 中,在 rails 3 thear 不是脚本/服务器脚本文件。 为您的项目安装 rvm ruby​​ 1.9.2 和正确的 gem。

希望这会有所帮助。

【讨论】:

  • 哪个 ruby​​ /usr/local/bin/ruby
  • gem 环境 RubyGems 环境:- RUBYGEMS 版本:1.3.7 - RUBY 版本:1.9.2(2010-12-25 补丁级别 136)[x86_64-darwin10.6.0] - 安装目录:/usr/ local/lib/ruby/gems/1.9.1 - RUBY 可执行文件:/usr/local/bin/ruby - 可执行目录:/usr/local/bin - RUBYGEMS 平台: - ruby​​ - x86_64-darwin-10 - GEM 路径: - /usr/local/lib/ruby/gems/1.9.1 - /Users/sneigaard/.gem/ruby/1.9.1 - GEM 配置: - :update_sources => true - :verbose => true - :benchmark => false - :backtrace => false - :bulk_threshold => 1000
  • ruby -v ruby​​ 1.9.2p136(2010-12-25 修订版 30365)[x86_64-darwin10.6.0]
  • 嗯,那是一些乱七八糟的 cmets.. 希望你们能理解它们
【解决方案3】:

我在将应用程序从 1.8.7 升级到 1.9.2 时遇到了这个问题。
在 Ruby 1.9.2 中,Kernel.require 不像 1.8 那样工作,而是他们似乎希望你使用 kernel.require_relative

请参阅此处了解适用于两种红宝石的解决方案

Ruby: require vs require_relative - best practice to workaround running in both Ruby <1.9.2 and >=1.9.2

【讨论】:

    猜你喜欢
    • 2011-10-14
    • 2013-06-15
    • 1970-01-01
    • 1970-01-01
    • 2014-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-31
    相关资源
    最近更新 更多