2012-05-09 1 views
2

Я запускаю приложение rails 2.3 с файлом config.ru для загрузки некоторого API-интерфейса grape API.Как использовать Rack :: URLMap с Rack :: Каскад для монтирования Resque in 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

Недавно я добавил аналогичный доступ к 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 
]) 

 Смежные вопросы

  • Нет связанных вопросов^_^