2016-07-15 8 views
0

ラックミドルウェア自体(RackWired)を使用するラックミドルウェアGEMを構築しようとしています。ラックミドルウェアのラックミドルウェア?

私は既存のアプリケーションを持っています。config.ruはRack :: Builderを使用しています。そのブロック(Rack :: Builder)では、ミドルウェアを指定したいときに、サードパーティのミドルウェア(rack-cors)を自分の中で使って何かをするように呼び出されます。私は分かりません。

問題は、Rack :: Builderのコンテキストがconfig.ruにあり、ミドルウェア(RackWired)がサードパーティのミドルウェア(ラック・コルサ)を「使用」するためにアクセスできないことです。

私の努力の意図はhere

ミドルウェア内のミドルウェアを使用する方法はありますか?

ありがとうございました

答えて

1

私はあなたが何をしようとしているのかよく分かりません。しかし、あなたはこの

class CorsWired 
    def initialize(app) 
    @app = app 
    end 

    def call(env) 
    cors = Rack::Cors.new(@app, {}) do 
     allow do 
     origins '*' 
     resource '*', :headers => :any, :methods => [:get, :post, :put, :options, :delete], :credentials => false 
     end 
    end 
    cors.call(env) 
    end 
end 

あなたconfig.ruはないuse CorsWired.new

これは、私はあなたが求めていたものだと思うが、私はあなたがミドルウェアのポイントを逃していると思います、しかしuse CorsWiredを持つ必要があります行うことができます。 config.ruを変更して、ミドルウェアの前後にラックコルサを使用するようにしてください。

require 'rack' 
require 'rack/cors' 
require './cors_wired'  

app = Rack::Builder.new do 
    use Rack::Cors do 
    allow do 
     origins '*' 
     resource '*', :headers => :any, :methods => [:get, :post, :put, :options, :delete], :credentials => false 
     end 
    end 
    use CorsWired 
    run lambda { |env| [200, {'Content-Type' => 'text/plain'}, ['OK']] } 
end 
run app 
+0

私が探していた最初の部分です。私は後者を簡単に行うことができましたが、私はCORSのためにいくつかのメタ構成を追加して、それをGemに引き込みたいと考えています。 –

+0

Rack :: Cors.new(@app、{})の初期化をしなくても構文エラーが発生するので、そのコードで洗練されています。blah blah end –