【发布时间】:2013-07-07 08:50:18
【问题描述】:
问题here问如何将Rails view helper函数提取到gem中,accept的回答还不错。
我想知道 - 如何为 Sinatra 做同样的事情?我正在制作一个在模块中定义了一堆帮助函数的 gem,我想让这些函数可用于 Sinatra 视图。但无论我尝试什么,我似乎都无法访问这些功能,我只是收到一个undefined local variable or method 错误。
到目前为止,我的 gem 结构如下所示(省略了 gemspec 等其他内容):
cool_gem/
lib/
cool_gem/
helper_functions.rb
sinatra.rb
cool_gem.rb
在cool_gem.rb,我有:
if defined?(Sinatra) and Sinatra.respond_to? :register
require 'cool_gem/sinatra'
end
在helper_functions.rb,我有:
module CoolGem
module HelperFunctions
def heading_tag(text)
"<h1>#{text}</h1>"
end
# + many more functions
end
end
在sinatra.rb,我有:
require 'cool_gem/helper_functions'
module CoolGem
module Sinatra
module MyHelpers
include CoolGem::HelperFunctions
end
def self.registered(app)
app.helpers MyHelpers
end
end
end
这不起作用。我哪里错了?
(如果您想知道,是的,我需要将辅助函数放在一个单独的文件中。我计划使 gem 也与 Rails 兼容,所以我想尽可能保持函数的隔离/解耦)。
【问题讨论】:
标签: ruby-on-rails ruby gem sinatra