2012-02-03 11 views
1

複数のアプリケーションを実装するために、モジュール式Padrinoアプリケーションを構築しています。アプリケーション間でフィルタを共有する

私はそのような/clientsとして、他のエンドポイントに他のappilicationsを取り付けていますし、これらのアプリケーションは、基本アプリケーションから継承/

class BaseApp < Padrino::Application 
    ... 
end 

にベースアプリケーションを取り付けています:

class ClientsApp < BaseApp 
    ... 
end 

この継承クラス用のapp.rbにすべての設定、エラー処理、付属のラックミドルウェアを定義することができます。

これまでのところとても良いです。 また、beforeafterをアプリ間でルーティングしたいと思います。

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の下に置くスタンダード・シナトラの拡張機能、使用することができます

答えて

4

# app/app.rb 
class MyApp < Padrino::Application 
    register CommonFilters 
end 
+0

おかげではなく動作しません - 'NoMethodError:未定義のメソッド 'フィルタを=' のClientsApp:Class' –

+0

更新されたコードを確認してください – DAddYE

+0

ありがとうございます。更新されたコードはもはやエラーをスローしませんが、サブクラスアプリケーションのすべてのルートは404を返します。ルートが上書きされているかのようです。他のアイデア? –

関連する問題