【问题标题】:Rails3 server and bundler error: uninitialized constant Bundler (NameError)Rails3 服务器和捆绑器错误:未初始化的常量捆绑器 (NameError)
【发布时间】:2010-02-17 17:34:22
【问题描述】:

我只安装了 rails 3 和它需要的所有 gem,但是当我尝试启动服务器时,它说启动脚本中有问题。

[rap-kasta@acerAspire testR3]$ script/rails server  
/home/rap-kasta/tmp/testR3/config/boot.rb:7:in `rescue in <top (required)>': uninitialized constant Bundler (NameError)  
        from /home/rap-kasta/tmp/testR3/config/boot.rb:2:in `<top (required)>'  
        from script/rails:9:in `require'  
        from script/rails:9:in `<main>  

所以,我尝试重新安装 Bundler,安装“pre”-version(但实际上它的版本号低于我通过 gem install bundler 安装的版本号

现在系统中有下一个宝石:

abstract (1.0.0)
actionmailer (3.0.0.beta, 2.3.5, 2.3.4)
actionpack (3.0.0.beta, 2.3.5, 2.3.4)
activemodel (3.0.0.beta)
activerecord (3.0.0.beta, 2.3.5, 2.3.4)
activeresource (3.0.0.beta, 2.3.5, 2.3.4)
activesupport (3.0.0.beta, 2.3.5, 2.3.4)
arel (0.2.1, 0.2.pre)
builder (2.1.2)
bundler (0.9.5)
erubis (2.6.5)
fxri (0.3.7)
fxruby (1.6.20)
i18n (0.3.3)
jemini (2010.1.24, 2010.1.5)
mail (2.1.2)
memcache-client (1.7.8)
mime-types (1.16)
mysql (2.8.1)
nifty-generators (0.3.2, 0.3.0)
rack (1.1.0, 1.0.1, 1.0.0)
rack-mount (0.5.1, 0.4.0)
rack-openid (0.2.3, 0.2.2)
rack-test (0.5.3)
rails (3.0.0.beta, 2.3.5, 2.3.4)
railties (3.0.0.beta)
rake (0.8.7)
rawr (1.3.8)
RedCloth (4.2.2)
ruby-mysql (3.0.2)
ruby-openid (2.1.7)
rubygems-update (1.3.5)
rubyzip (0.9.4, 0.9.1)
rubyzip2 (2.0.1)
sqlite3-ruby (1.2.5)
text-format (1.0.0)
text-hyphen (1.0.0)
thor (0.13.2, 0.13.1)
tzinfo (0.3.16)

另外,rails console 也有同样的错误,bundle check 也有类似的错误:

[rap-kasta@acerAspire testR3]$ bundle check
/usr/lib/ruby/gems/1.9.1/gems/bundler-0.9.5/bin/bundle:12:in `rescue in <top (required)>': uninitialized constant Bundler::BundlerError (NameError)
        from /usr/lib/ruby/gems/1.9.1/gems/bundler-0.9.5/bin/bundle:10:in `<top (required)>'
        from /usr/bin/bundle:19:in `load'
        from /usr/bin/bundle:19:in `<main>'

【问题讨论】:

  • 脚本/控制台是否工作或失败并出现相同的错误?我在 Rails 3 beta 中找不到应该存在的东西时遇到了很多麻烦。还可以尝试在主应用程序目录中运行“捆绑检查”。
  • 不,它没有,“捆绑检查”也失败并出现类似错误

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


【解决方案1】:

添加后生效:

gem install bundler

添加后:

gem 'bundler'

在 config/boot.rb 的第 2 行(就在 require 'rubygems' 之后)

【讨论】:

    【解决方案2】:

    请确认 ruby​​ 和 rake 命令的路径。

    $ which ruby
    /usr/bin/ruby
    $ which rake
    /usr/local/bin/rake
    

    我遇到了同样的错误。就我而言,我使用 /usr/bin/ruby 安装 Rails,但 rake 使用 /usr/local/bin/ruby。这就是为什么我得到与 Bundler 相关的错误。

    【讨论】:

    • 那太好了,我也是,现在你如何解决它?
    【解决方案3】:

    这不是 Bundler(或 Rails)中的错误,它是 gems 系统中的错误(?!),我认为...... 所以.. 我也有 gem 'rawr',它有文件 'bundler.rb' 和 gems 系统加载它而不是 'bundler/../bundler.rb'。

    我删除了 rawr,但现在我不能使用 jemini... 但我的问题现在解决了。

    【讨论】:

      【解决方案4】:

      我已将我的 ruby​​gems 升级到 1.5.0,但我还需要将 ruby​​-1.9.2-p180 作为我在 RVM 中的默认 ruby​​ 版本。这对我有用。

      【讨论】:

        【解决方案5】:

        我在 Mac 上遇到了问题,因为在“/opt/local/lib/ruby/gems/1.8”中安装了几个 gem(包括 bundler),默认情况下由 irb 中的 RubyGems 加载,但不在 rake 中。

        这是我修复它的方法,它可能并不完美,但至少它有效:

        1. 进入irb并做

          ,找到你需要的路径
          require 'rubygems'
          Gem.path
          => ["/Users/joel/.gem/ruby/1.8", "/opt/local/lib/ruby/gems/1.8"]
          

          这些是默认路径,所以如果在 irb 中一切正常,它们就很好。

        2. 现在,在 boot.rb 中添加(当然,如果它们不同,请使用您的路径)

          Gem.path.push "/opt/local/lib/ruby/gems/1.8"
          Gem::Specification.find_by_name('bundler').activate
          

          紧接着

          require 'rubygems'
          

        希望这能解决你的问题,至少我很高兴我为我修复了它,所以我终于可以使用 Rails 3 了!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-01-27
          • 2011-09-18
          • 2016-03-26
          • 1970-01-01
          • 2015-01-23
          相关资源
          最近更新 更多