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 }
在 routes.rb
mount Resque::Server.new, :at => '/resque'
一切正常.我现在能够看到Resque Web界面.但是,我想保护这一点不受公众的欢迎.可能使用用户名和密码.如何才能做到这一点?
我不太了解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( email, password ) 。