我正在编写我的第一个宝石,并且我在初始化器部分存在一些问题。
所以我读到了关于Railtie的内容,我有点困惑,有一部分涉及初始化器和生成器上的内容。
根据这个帖子,他建议使用发电机 Rails how to create an initializer inside a gem
所以我不确定最好的方法是什么。
无论如何,我试图做一些初始化程序,为Jbuilder添加一些方法
module MyGem
class Railtie < Rails::Railtie
initializer "my_gem.jbuilder_custom_cache" do |variable|
class JbuilderTemplate
def custom_cache!(resource, name, &block)
fragment_cache_key = ::MyGem::Logic.cache_key(name, resource)
options = { expires_in: 1.hour }
cache!(fragment_cache_key, options, &block)
end
end
end
end
end
这没效果。
答案 0 :(得分:1)
这是未经测试的,但我认为你可以这样做:
module MyGem
class Railtie < Rails::Railtie
config.to_prepare do
JbuilderTemplate.class_eval do
def custom_cache!(resource, name, &block)
fragment_cache_key = ::MyGem::Logic.cache_key(name, resource)
options = { expires_in: 1.hour }
cache!(fragment_cache_key, options, &block)
end
end
end
end
end
有关config.to_prepare
阻止的详细信息,请参阅此处(http://api.rubyonrails.org/classes/Rails/Railtie.html#class-Rails::Railtie-label-Configuration)。