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

时间:2011-08-31 13:00:32

标签: ruby-on-rails-3 heroku resque

在我的开发机器上,我可以在控制台中键入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 }
routes.rb

中的

mount Resque::Server.new, :at => '/resque'

一切正常。我现在能够看到Resque Web界面。但是,我想保护这一点不受公众的欢迎。可能使用用户名和密码。怎么办呢?

2 个答案:

答案 0 :(得分:4)

我真的不知道heroku,但如果您有 config.ru Rackup 文件,您可以在自己的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

修改

由于您已将其安装在rails中,只需在初始化文件中添加此语句:

Resque::Server.class_eval do

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

end

显然,使用 User.authenticate(电子邮件,密码)来验证用户身份。

答案 1 :(得分:0)

此问题和Maurício's answer可能指的是Resque中包含的Sinatra应用。

还有resque-web,一个可以添加到Heroku上现有Rails应用程序的Rails引擎。我发现这是一个更简单,更快速的解决方案。

Resque-web包含HTTP基本身份验证的界面,您可以在project documentation中查看。