移动到 gem 后模块不再工作

Module no longer works after moving to gem

我有一个模块 Voltaire,效果很好。在我的文章控制器中,我有一种方法可以通过传递到参数中的数量来增加用户的声誉。

我决定制作一个gem提供的模块。从那以后,我从我的 application_controller.rb 文件中删除了该模块,并使其成为自己的 gem,推送到 github,并捆绑安装它:

class ArticlesController < ApplicationController
  include Voltaire

  def upvote
    @article.upvote_by current_user

    voltaire_up(1, :reputation, @article.user_id)
    redirect_to :back
  end

  def downvote
    @article.downvote_by current_user

    voltaire_down(1, :reputation, @article.user_id)
    redirect_to :back
  end
end

当我使用该模块中的任何方法时,我得到了 undefined method `voltaire_down' 它之前工作的地方。

我也试过从控制器中移除 include Voltaire,但这仍然无效。

我错过了什么?

我能让它工作的唯一方法是将 include Voltaire 放在控制器的顶部。我的印象是 rails 会自动执行此操作,但我在两个单独的应用程序上尝试了 gem,这是唯一可行的方法。

编辑

在收到一些评论后,我设法让它正常运行。在我的模块所在的 gem 文件中,我刚刚包含了这个。现在 rails 将其包含到控制器中并且运行良好。

if defined? ActionController::Base
  ActionController::Base.class_eval do
    include Voltaire
  end
end