我有一组经常使用的rails视图助手,并希望将它们打包成一个gem,这样我就可以在我的Gemfile中添加一行,并从我的视图中访问帮助器。
我在使用Bundler和Jeweler之前创建了宝石,但是,我并不清楚如何在gem中组织Rails视图助手,并将它们包含在rails中。
我很感激任何指针,或者链接到有关如何为Rails 3执行此操作的最新教程
由于
只是澄清:问题不在于“如何创造宝石”。它的“如何在gem中打包视图助手,所以我可以在Rails中使用它们”
编辑2: 我也同意下面的海报..轨道引擎对于这种(希望简单的)要求来说太过分了
答案 0 :(得分:89)
在我看来,完整Engine对于此任务来说是过度的。你可以在初始化时创建一个Railtie,其中包括你的助手到ActionView :: Base。
# lib/my_gem/view_helpers.rb
module MyGem
module ViewHelpers
def pre(text)
content_tag :pre, text
end
def another_helper
# super secret stuff
end
end
end
# lib/my_gem/railtie.rb
require 'my_gem/view_helpers'
module MyGem
class Railtie < Rails::Railtie
initializer "my_gem.view_helpers" do
ActionView::Base.send :include, ViewHelpers
end
end
end
# lib/my_gem.rb
require 'my_gem/railtie' if defined?(Rails)
答案 1 :(得分:5)
此外,如果您只想为Rails3版本提供包含帮助程序,则可以使用
# lib/my_gem.rb
require 'my_gem/railtie' if defined?(Rails::Railtie)
答案 2 :(得分:2)
您可能正在寻找的是engine。引擎是一个包含rails应用程序部件的gem(实际上,rails应用程序本身就是一个引擎。)