【问题标题】:How to modify a Rails engine to require my library?如何修改 Rails 引擎以需要我的库?
【发布时间】:2011-04-09 20:59:06
【问题描述】:

我有一个 Rails 引擎(别人的 gem),我试图通过添加另一个 gem 作为依赖项来修改它。我似乎无法弄清楚如何让引擎需要库。我尝试了各种不同的方法,但我似乎无法让它发挥作用。

我的主应用 Gemfile 我有引擎:

gem 'enginegem'

在引擎的 gemspec 中我有:

s.add_dependency 'somethinggem', '~> 1.0'

在引擎中,我尝试通过添加此acts_as_something 方法来修改模型:

class Page < ActiveRecord::Base
  acts_as_something
end

我正在尝试修改一个控制器:

class PagesController < ApplicationController
  around_filter :do_something

  def do_something
    my_var = 'foobar'
    Something.do_something_with my_var do
      yield
    end
  end
end

将此库作为依赖项添加到引擎并使其需要该库的适当方法是什么?

【问题讨论】:

    标签: ruby-on-rails ruby rubygems gem rails-engines


    【解决方案1】:

    如果您告诉我们您要修改哪个 gem,将会很有帮助。

    在大多数 gems 中,您将拥有一个 lib/enginegem.rb,这可能是需要 gem 的最佳位置:

    require 'somethinggem'
    

    编辑:虽然这个答案对 OP 没有帮助(见下面的 cmets),但我会保留在这里,因为它可能会帮助其他人。

    编辑 2:尝试创建引擎的每个人都应该查看devise 的代码。如果您想要一种更具指导性的方法,请尝试 Jose Valim 的 Crafting Rails Applications 书籍。事实上,如果你对这个引擎很认真,你应该两者都做。

    【讨论】:

    • 您可以尝试在模型中包含 require 吗?告诉我它是否有效,以便我更新答案。
    • 你确定你需要正确的库吗?有些宝石需要使用不同的名称。
    • 我让它工作了。与我正在做的事没有任何关系。我使用的实际 gem 有问题。
    • 没关系。我会在这里保留答案,因为它可能对其他人有所帮助。
    • 是的,通常的做法是在 lib/&lt;enginename&gt;.rb 中要求其他 gem。
    猜你喜欢
    • 2011-08-05
    • 1970-01-01
    • 2010-11-12
    • 1970-01-01
    • 1970-01-01
    • 2019-12-12
    • 1970-01-01
    • 1970-01-01
    • 2016-01-22
    相关资源
    最近更新 更多