Rails Gem Bundler打破了依赖关系

时间:2010-01-25 18:07:02

标签: ruby-on-rails bundle gem

我最近安装了Bundle gem(稳定版2.3.x)和一个集成的3.0版本。安装2.3.x的文档很薄弱,所以我在这里寻求帮助。

我已经完成了有关安装和配置gem bundler的文章(安装gem bundler,定义Gemfile,添加preinitializer.rb,需要bundler_gems / environment.rb):

http://litanyagainstfear.com/blog/2009/10/14/gem-bundler-is-the-future/

我可以成功运行脚本/服务器,但是当我尝试通过浏览器访问任何页面时,我收到500内部服务器错误声称许多ActionView方法未定义:

ActionView::TemplateError (undefined method `debug' ...

ActionView::TemplateError (undefined method `javascript_tag' ... 

必须有某些宝石依赖在某处失败?这是我的Gemfile(rails 2.3.5):

clear_sources
bundle_path "vendor/bundler_gems"

source "http://gems.github.com"
source "http://gemcutter.org"

gem "rails", "2.3.5"
gem "formtastic"
gem "authlogic"
gem "will_paginate"
gem "cancan"

任何指针?

4 个答案:

答案 0 :(得分:1)

所以在Rails 2.3.5上配置gem bundler:

我将preinitializer.rb脚本更改为:

# Load the environment constructed from the Gemfile
require "#{File.dirname(__FILE__)}/../vendor/bundler_gems/environment"

module Rails
  class Boot
    def run
      load_initializer
      extend_environment
      Rails::Initializer.run(:set_load_path)
    end

    def extend_environment
      Rails::Initializer.class_eval do
        old_load = instance_method(:load_gems)
        define_method(:load_gems) do
          old_load.bind(self).call
          Bundler.require_env RAILS_ENV
        end
      end
    end
  end
end

从config / environment.rb中删除了所有Bundler.require_env定义,一切都很好。

http://gist.github.com/286099

答案 1 :(得分:1)

作为参考,bundle现在是0.9.5。这是最新的rails 2.3.5配置(你基本上可以忽略其他所有内容):

http://gist.github.com/302406

答案 2 :(得分:0)

这些宝石中的大部分(或全部)都是Rails插件。您应该在Rails初始化阶段需要它们。请将此贴在after_initialize

config.after_initialize do
  Bundler.require_env
end

答案 3 :(得分:0)

更新为Gem Bundler文档改进:

http://gembundler.com/rails23.html