gpt4 book ai didi

ruby-on-rails-3 - 如何使用 Gemfile 在 Rails 3 应用程序中自动加载 gemspec 依赖项

转载 作者:行者123 更新时间:2023-12-04 01:49:59 25 4
gpt4 key购买 nike

我有一个 Rails 3 应用程序,我正在把它变成一个 Rails 引擎/gem。
这个引擎有一些我已经放在它的 .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"])

.. 并且父 Rails 3 应用程序在其 Gemfile 中有这些行:
source 'http://rubygems.org'

gem 'my_engine', :path => "~/src/gems/my_engine"

但我收到以下错误:
undefined local variable or method `acts_as_commentable'
from /home/user/src/gems/my_engine/app/models/account.rb:66:in `<class:Account>'

但是如果我添加 gem 'acts_as_commentable', '>= 3.0.1'到父 Rails 3 应用程序的 Gemfile,然后加载 gem 并且错误消失。

我正在使用 Rails 3.0.8。

有没有人有什么建议?我是否需要更改引擎加载方式?

最佳答案

在主 Rails 应用程序启动期间,Bundler 只需要直接在 Gemfile 中列出的依赖项,而不需要任何子依赖项。 当它本身被需要时,你的库/引擎有责任要求它的依赖项。 您可以使用 Railtie 中的初始化程序来实现。

class MyRailtie < Rails::Railtie
initializer "require stuff" do
require "stuff"
end
end

关于ruby-on-rails-3 - 如何使用 Gemfile 在 Rails 3 应用程序中自动加载 gemspec 依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6960078/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com