大きなSinatraファイルをレジスタを使って別のファイルに分割します。これはmodular Sinatra app using extensionsを持つ1つの方法です。異なるスコープのSinatraアプリを分割する方法は?
私は、次のコードのようなもので終わるよ:シナトラは、レジスタとヘルパーでどのように機能するか
MyApp < Sinatra::Base
register OneRegister
register SecondRegister
end
module OneRegister
def self.registered(app)
app.helpers OneRegisterHelper
app.get "/one-endpoint" do
do_stuff
end
end
module OneRegisterHelper
def do_stuff
# Some code
end
end
end
module SecondRegister
def self.registered(app)
app.helpers SecondRegisterHelper
app.get "/second-endpoint" do
do_stuff
end
end
module SecondRegisterHelper
def do_stuff
# Different code
end
end
end
問題があります。私が登録のための新しいヘルパーを作成するたびに、私はヘルパーのメソッドでメインのSinatraアプリスコープを汚染しています。
do_stuff
はSecondRegisterHelper
で上書きされますが(これはモジュールを組み込むときにRubyが動作する方法です)、同じメソッドを使用していても別の実装をしたいと思います名前または別のもの(それぞれ25個のレジスタを持ち、それぞれに小さなメソッドを持つappをイメージします)。
基本的に私は通常、非常に小さなプライベートメソッドを1つの責任で書くので、プライベートメソッドとは異なるレジスタを持っていたいと思います。任意のアイデア、どのようにこれを達成することができますか?