ここでの質問は、Rails ビュー ヘルパー関数を gem に抽出する方法を尋ねており、受け入れられる回答はかなり良いものです。
私は疑問に思っています - シナトラに対して同じことをする方法は? モジュールで定義された一連のヘルパー関数を持つ 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 と互換性を持つようにする予定なので、可能であれば関数を分離/分離したままにします)。