複数のアプリケーションを実装するために、モジュール式Padrinoアプリケーションを構築しています。アプリケーション間でフィルタを共有する
私はそのような/clients
として、他のエンドポイントに他のappilicationsを取り付けていますし、これらのアプリケーションは、基本アプリケーションから継承/
class BaseApp < Padrino::Application
...
end
にベースアプリケーションを取り付けています:
class ClientsApp < BaseApp
...
end
この継承クラス用のapp.rb
にすべての設定、エラー処理、付属のラックミドルウェアを定義することができます。
これまでのところとても良いです。 また、before
とafter
をアプリ間でルーティングしたいと思います。
BaseApp.controller do
before do
...
end
after do
...
end
get :index do
...
end
end
よりもむしろそのように、私のClientsApp
コントローラのコードでこれらのフィルタを繰り返す:
ClientsApp.controller do
before do
...
end
after do
...
end
get :index do
...
end
end
は、私がこれを乾燥させることができるとにかくあり、私はこれをしたい私のBaseApp
コントローラコードの例についてはコードを指定して、BaseApp
に一度フィルタを指定して、何らかの方法で継承させますか?私はこれらのフィルタがメソッドではなくメソッドであることを理解しています。
ありがとうございます!
# lib/common_filters.rb
module CommonFilters
def self.registered(app)
app.before do
...
end
app.after do
...
end
end
end
あなたのアプリで次に
:あなたはlibの下に置くスタンダード・シナトラの拡張機能、使用することができます
おかげではなく動作しません - 'NoMethodError:未定義のメソッド 'フィルタを=' のClientsApp:Class' –
更新されたコードを確認してください – DAddYE
ありがとうございます。更新されたコードはもはやエラーをスローしませんが、サブクラスアプリケーションのすべてのルートは404を返します。ルートが上書きされているかのようです。他のアイデア? –