1
我正在使用寄存器將一個大的Sinatra文件分成不同的文件。這是獲得modular Sinatra app using extensions的一種方法。如何使用不同範圍分割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個寄存器以小方法映射)。
基本上,我想有不同的寄存器與私有方法,因爲我通常寫一個單一的責任非常小的私人方法。任何想法,我怎麼能做到這一點?