2012-05-09 28 views
2

我一直在運行一個rails 2.3應用程序和一個rackup config.ru文件來加載一些葡萄API中間件。如何使用Rack :: CasMap和Rack :: CasMap來在Rails 2.3中裝載Resque1

我最近有需要運行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

我最近在我的一臺rails服務器上添加了類似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 
])