2011-08-31 522 views
11

在我的開發機器上,我可以在控制檯中鍵入resque-web,並在顯示Resque接口的瀏覽器上啓動一個新選項卡。如何讓resque-web在Heroku上工作?

關於Heroku,雪松堆棧,我該怎麼做同樣的事情?即我希望看到我的Heroku應用的Resque界面。

編輯

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網頁界面。不過,我想保護這個公衆視野。可能使用用戶名和密碼。如何才能做到這一點?

+0

非常有幫助。如果你只是想要一個基本的HTTP認證,請檢查(http://railscasts.com/episodes/82-http-basic-authentication)。 – Suren

+0

如果您使用Redis To Go,此文檔將有所幫助:https://redistogo.com/documentation/resque?language=en –

回答

4

我真的不知道Heroku的,但如果你有一個config.ruRackup文件您可以在自己的Rails應用程序內運行resque-網絡,這裏是如何做到這一點的例子:

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 

編輯

因爲你已經軌道內安裝它,只需添加這種說法在初始化文件:

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)

+0

請參閱我上面的編輯 –

+1

您去了哪裏,更新了答案。 –

+0

它的'Resque :: Server'或'Resque :: Server.new'是否有用?我見過兩個例子! –

0

此問題和Maurício's answer很可能是指Resque附帶的Sinatra應用程序。

還有resque-web,這是一個Rails引擎,可以添加到Heroku上現有的Rails應用程序中。我發現這是一個更簡單快捷的解決方案。

Resque-web包含一個用於HTTP基本認證的接口,您可以在project documentation中查看該接口。