Как заставить resque-web работать на Heroku?

На моей машине разработчика я могу печатать resque-web в консоли, и он запускает новую вкладку в моем браузере, которая показывает интерфейс Resque.

На Heroku, Cedar stack, как я могу сделать то же самое? т.е. я хотел бы видеть интерфейс 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. Тем не менее, я хотел бы защитить это от публичного просмотра. Возможно с именем пользователя и паролем. Как это может быть сделано?

2 ответа

Решение

Я не очень хорошо знаю heroku, но если у вас есть файл config.ru или Rackup, вы можете запустить resque-web в своем собственном приложении rails, вот пример того, как это сделать:

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(электронная почта, пароль) тем, что вы используете для аутентификации ваших пользователей.

Этот вопрос и ответ Маурисио, вероятно, относятся к приложению Sinatra, включенному в Resque.

Также есть resque-web, Rails Engine, который можно добавить в существующее приложение Rails на Heroku. Я обнаружил, что это более простое и быстрое решение.

Resque-web включает интерфейс для базовой аутентификации HTTP, который вы можете проверить в документации проекта.

Другие вопросы по тегам