2

我一直在运行带有 rackup config.ru 文件的 rails 2.3 应用程序来加载一些葡萄 API 中间件。

我最近需要运行一个 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
])

这并没有给我想要的效果,我不知道为什么。

4

2 回答 2

4

我真的找到了答案。原来redis没有运行,是的,可以使用cascade with map

我最终的 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
])
于 2012-05-19T01:56:38.840 回答
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

但是,我的应用程序基于 rails 3.2。我不确定您正在运行的机架版本有什么区别。

您是否需要 resque 服务器代码?

于 2012-05-09T04:06:04.337 回答