2016-04-02 12 views
0

テストヘルパーのために、私はルートの開始にルートを注入する必要があります。レールの始めに動的にルートを追加する

test_routes = Proc.new do 
    get "/#{route_root}/:id", to: "#{route_root}#test" 
    end 
    Rails.application.routes.eval_block(test_routes) 

問題があることが多いアプリケーションのルートリストの末尾にルート「すべてをキャッチ」ということですので、私は最初のルートとしてこれを注入する必要があります。最後にそれを追加するには簡単です。

私はここに技術を使用している

How to dynamically add routes in Rails 3.2

が、そのハックを、そして宝石の更新後に最後の夜、それは(理由はまだわからないが、routes.clear!の内側にその破壊)破ったので、私は探していますハックの少ないソリューションです。

module DynamicRouter 
    def self.routes router 
     router.get "/#{route_root}/:id", to: "#{route_root}#test" 
    end 
end 

をし、あなたのroutes.rbをしてちょうどあなたの関数を呼び出す:

答えて

0

はなぜ、このように独自のモジュールを作成していない我々はカスタム宝石の一部を行う方法です

# in routes.rb 
# first line 
DynamicRouter::routes(self) 

を。また、ルータを猿パッチすることができますが、それはよりハッキーです。

+0

これは、最終的に他の人が使用できる汎用テスト宝石になるということです。 routes.rbファイルに何も追加する必要はありません。テストヘルパーは、テストが開始されると自動的にテストヘルパーを実行します。理にかなっている? –

関連する問題