ndb*_*ent 11 gem dependencies rails-engines bundler ruby-on-rails-3
我有一个Rails 3应用程序,我正在变成一个Rails引擎/宝石.这个引擎有一些我已放在它的.gemspec文件中的gem依赖项.
我已经创建了一个新的'父'Rails 3应用程序,我想将我的引擎gem添加到Gemfile并让gem的依赖项自动"加载",但这对我不起作用!bundle install安装gem依赖项很好,但是当我启动服务器时,应用程序因为没有加载而崩溃.
例如,我的引擎的gemspec包含以下行:
s.add_runtime_dependency(%q<rails>, ["= 3.0.7"])
s.add_runtime_dependency(%q<acts_as_commentable>, [">= 3.0.1"])
s.add_runtime_dependency(%q<haml>, [">= 3.1.1"])
Run Code Online (Sandbox Code Playgroud)
..和父Rails 3应用程序在其Gemfile中有这些行:
source 'http://rubygems.org'
gem 'my_engine', :path => "~/src/gems/my_engine"
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:
undefined local variable or method `acts_as_commentable'
from /home/user/src/gems/my_engine/app/models/account.rb:66:in `<class:Account>'
Run Code Online (Sandbox Code Playgroud)
但是,如果我添加gem 'acts_as_commentable', '>= 3.0.1'到父Rails 3应用程序的Gemfile,则加载gem并且错误消失.
我正在使用Rails 3.0.8.
有没有人有什么建议?我是否需要更改引擎加载方式?
mis*_*lav 12
在主Rails应用程序启动期间,Bundler将只需要直接在Gemfile中列出的依赖项,但不需要任何子依赖项.这是您的库/ Engine的责任,在需要时需要它的依赖项.您可以使用Railtie中的初始化程序执行此操作.
class MyRailtie < Rails::Railtie
initializer "require stuff" do
require "stuff"
end
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4568 次 |
| 最近记录: |