2011-08-31 24 views
11

Trên máy tính của tôi, tôi có thể nhập resque-web trong bảng điều khiển và nó sẽ khởi chạy tab mới trên trình duyệt của tôi hiển thị giao diện Resque.Làm thế nào để có được resque-web để làm việc trên Heroku?

Trên Heroku, Cedar stack, tôi có thể làm điều tương tự như thế nào? tức là tôi muốn xem giao diện của Resque cho ứng dụng Heroku của tôi.

EDIT

trong 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 } 

trong routes.rb

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

Tất cả mọi thứ hoạt động. Bây giờ tôi có thể thấy giao diện web Resque. Tuy nhiên, tôi muốn bảo vệ điều này khỏi chế độ xem công khai. Có thể với tên người dùng và mật khẩu. Điều này có thể giải quyết như thế nào?

+0

Rất hữu ích. [Kiểm tra điều này] (http://railscasts.com/episodes/82-http-basic-authentication) nếu bạn chỉ muốn xác thực HTTP cơ bản. – Suren

+0

Tài liệu này hữu ích nếu bạn đang sử dụng Redis To Go: https://redistogo.com/documentation/resque?language=en –

Trả lời

4

tôi không thực sự biết Heroku, nhưng nếu bạn có một config.ru hoặc Rackup tập tin bạn có thể chạy resque-web bên trong ứng dụng đường ray riêng của bạn, đây là một ví dụ về cách để làm điều đó:

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 

EDIT

Như bạn đã gắn nó bên đường ray, chỉ cần thêm tuyên bố này trong một tập tin khởi tạo:

Resque::Server.class_eval do 

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

end 

Rõ ràng, hãy tạo User.authenticate (email, mật khẩu) bất cứ điều gì bạn sử dụng để xác thực người dùng của mình.

+0

Xem chỉnh sửa của tôi ở trên –

+1

Có bạn, câu trả lời cập nhật. –

+0

Có vấn đề gì nếu «Resque :: Server' hoặc' Resque :: Server.new' của nó? Tôi đã xem các ví dụ của cả hai! –

0

Câu hỏi này và Maurício's answer có thể đề cập đến ứng dụng Sinatra đi kèm với Resque.

Ngoài ra còn có resque-web, một công cụ Rails có thể được thêm vào ứng dụng Rails hiện có trên Heroku. Tôi thấy đây là một giải pháp dễ dàng hơn và nhanh hơn.

Resque-web bao gồm giao diện cho xác thực cơ bản HTTP, bạn có thể kiểm tra trong project documentation.

Các vấn đề liên quan