宝石似乎不是自我初始化的

时间:2013-10-14 17:56:34

标签: ruby-on-rails ruby-on-rails-3 gem initialization

我试图编写一个扩展ActiveRecord模型可用方法的gem。此时它非常简单,只有3个文件,按照此问题中列出的说明进行操作:Rails extending ActiveRecord::Base并使用Railties进行自我启动。

my_gem.rb

require 'my_gem/railtie' if defined? ::Rails::Railtie

my_gem / railtie.rb

require 'my_gem/extensions'
module MyGem
  class Railtie < ::Rails::Railtie
    initializer "my_gem.extensions" do
      ActiveSupport.on_load(:active_record) do
        ActiveRecord::Base.send :include, Extensions
      end 
    end
  end
end

my_gem / extensions.rb中

module MyGem
  module Extensions
    extend ActiveSupport::Concern

    module ClassMethods

      def in_the_past_x_days x = 14
        where("#{self.table_name}.created_at > ?", x.days.ago)
        .group("DATE(#{self.table_name}.created_at)")
      end

    end
  end
end

这会导致&#34; NoMethodError&#34;但是,每当我尝试调用in_the_past_x_days时。我错过了一些明显的东西吗?

更新

原来这是显而易见的,详见答案。

1 个答案:

答案 0 :(得分:0)

这个gem的构建是为了补充开发中另一个gem的功能,它没有正确更新(必须在父级中使用github地址指定gem才能引用本地文件)。