如何让resque-web在Heroku上工作?

Chr*_*ini 11 heroku resque ruby-on-rails-3

在我的开发机器上,我可以输入resque-web一个控制台,它会在我的浏览器上启动一个显示Resque界面的新选项卡.

在Heroku,Cedar堆栈上,我怎么能做同样的事情?即我想看看Resque的界面为我的Heroku应用程序.

编辑

config/initializers/resque.rb

require 'resque'
require 'resque/server'

uri = URI.parse(APP_CONFIG['redis_to_go_url'])
Resque.redis = Redis.new(:host => uri.host, :port => uri.port, :password => uri.password)

# Load all jobs at /app/jobs
Dir["#{Rails.root}/app/jobs/*.rb"].each { |file| require file }
Run Code Online (Sandbox Code Playgroud)

routes.rb

mount Resque::Server.new, :at => '/resque'
Run Code Online (Sandbox Code Playgroud)

一切正常.我现在能够看到Resque Web界面.但是,我想保护这一点不受公众的欢迎.可能使用用户名和密码.如何才能做到这一点?

Mau*_*res 4

我不太了解heroku,但是如果您有config.ruRackup文件,您可以在自己的 Rails 应用程序中运行 resque-web,以下是如何执行此操作的示例:

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

Resque::Server.class_eval do

  use Rack::Auth::Basic do |email, password|
    user = User.authenticate( email, password )
    user && user.admin?
  end

end

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

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

  map "/" do
    run ActionController::Dispatcher.new
  end
}.to_app

run app
Run Code Online (Sandbox Code Playgroud)

编辑

由于您已经将其安装在 Rails 内部,因此只需在初始值设定项文件中添加以下语句:

Resque::Server.class_eval do

  use Rack::Auth::Basic do |email, password|
    user = User.authenticate( email, password )
    user && user.admin?
  end

end
Run Code Online (Sandbox Code Playgroud)

显然,无论您使用什么来验证用户身份,都应使用User.authenticate( email, password ) 。