2012-05-09 6 views
2

いくつかのブドウAPIミドルウェアをロードするために、rackup config.ruファイルでrails 2.3アプリケーションを実行しています。Rack :: CapsadeでRack :: Capsadeを使用してRails 2.3をマウントする方法

最近、私はresqueサーバを実行する必要があります。

私のconfig.ruはこのように設定されています。

require File.dirname(__FILE__) + '/config/environment' 

my_app = Rack::Builder.new do 
use Rails::Rack::LogTailer #optional 
use Rails::Rack::StatiC# optional 
run ActionController::Dispatcher.new 
end 



Resque::Server.class_eval do 
    use Rack::Auth::Basic do |user, password| 
    begin 
     if user == "admin" and password == "bandana" 
     true 
     else 
     false 
     end 
    end 
    end 

end 

run Rack::URLMap.new([ 
    "/" => my_app, 
    "/resque" => Resque::Server.new 
]) 

run Rack::Cascade.new([ 
    GrapeAPI_entry_1, 
    GrapeAPI_entry_2, 
    my_app 
]) 

これは私に望ましい効果を与えるものではありません。理由はわかりません。

答えて

1

最近、私のレールサーバの1つにresqueと同様のアクセス権が追加されました。それは素晴らしい - ここで私はそれをやった方法です:

# This file is used by Rack-based servers to start the application. 
require ::File.expand_path('../config/environment', __FILE__) 
require 'resque/server' 

run Rack::URLMap.new \ 
    "/"  => MyApp::Application, 
    "/resque" => Resque::Server.new 

私のアプリは、レール3.2に基づいています。私はあなたが実行しているラックのバージョンの違いは何か分かりません。

resqueサーバーコードが必要ですか?

4

私は実際に答えを見つけました。 redisが実行されていないことが判明しました。はい、マップでカスケードを使用できます。

最終的なconfig.ruは次のようになります。

re File.dirname(__FILE__) + '/config/environment' 
require 'resque/server' 

my_app = Rack::Builder.new do 
use Rails::Rack::LogTailer #optional 
use Rails::Rack::StatiC# optional 
run ActionController::Dispatcher.new 
end 

Resque::Server.class_eval do 
    use Rack::Auth::Basic do |user, password| 
    begin 
     if user == "admin" and password == "bandana" 
     true 
     else 
     false 
     end 
    end 
    end 

end 



app = Rack::Builder.new { 
    use Rails::Rack::Static 

    map "/resque" do 
    run Resque::Server 
    end 

    map "/" do 
    run my_app 
    end 
}.to_app 

run Rack::Cascade.new([ 
    Grape_API_1, 
    Grape_API_2, 
    my_app 
]) 
関連する問題