Как заставить 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, который вы можете проверить в документации проекта.