【问题标题】:resque-web links are broken when relative url root is configured配置相对 url 根时 resque-web 链接被破坏
【发布时间】:2019-01-15 23:05:49
【问题描述】:
我在 staging/prod 环境中为应用程序使用 relative_url_root 以部署到子目录。我最近开始将resque 用于活动作业,并实现了resque-web 一个用于查看resque 作业队列的前端。当用户点击链接时,resque web主页上的所有链接都不尊重relative_url_path。
config.action_controller.relative_url_root = /metric
当我们点击 resque 网络上的工作工作链接时。它正在渲染/resque_web/working 而不是/metric/resque_web/working,这会使链接断开。
有什么想法吗?
【问题讨论】:
标签:
ruby-on-rails
ruby
resque
rails-activejob
【解决方案1】:
对我有用的是:
-
在config/routes.rb 中挂载 ResqueWeb,如下所示:
require "resque_web"
Rails.application.routes.draw do
mount ResqueWeb::Engine => "/resque/"
root 'resque_web/overview#show'
end
-
在config/application.rb中设置相对URL根:
config.relative_url_root = '/resque'
-
更新 Nginx 配置如下
location ~ ^/resque/(.*|$) {
alias /home/ravi/ws/ror/resque-web/public$1;
passenger_app_root /home/ravi/ws/ror/resque-web;
passenger_document_root /home/ravi/ws/ror/resque-web/public;
passenger_enabled on;
passenger_app_env development;
}
resque 仪表板上的每个链接都是以 /resque 为前缀生成的,例如/resque/workers 指向工人列表,即resque_web/workers#index
我的 rake 路由输出是:
Prefix Verb URI Pattern Controller#Action
resque_web /resque ResqueWeb::Engine
root GET / resque_web/overview#show
Routes for ResqueWeb::Plugins::ResqueScheduler::Engine:
schedules GET /schedule(.:format) resque_web/plugins/resque_scheduler/schedules#index
requeue POST /schedule/requeue(.:format) resque_web/plugins/resque_scheduler/schedules#requeue
requeue_with_params POST /schedule/requeue_with_params(.:format) resque_web/plugins/resque_scheduler/schedules#requeue_with_params
schedule DELETE /schedule(.:format) resque_web/plugins/resque_scheduler/schedules#destroy
delayed GET /delayed(.:format) resque_web/plugins/resque_scheduler/delayed#index
delayed_job_class GET /delayed/jobs/:klass(.:format) resque_web/plugins/resque_scheduler/delayed#jobs_klass
delayed_search POST /delayed/search(.:format) resque_web/plugins/resque_scheduler/delayed#search
timestamp GET /delayed/:timestamp(.:format) resque_web/plugins/resque_scheduler/delayed#timestamp
queue_now POST /delayed/queue_now(.:format) resque_web/plugins/resque_scheduler/delayed#queue_now
cancel_now POST /delayed/cancel_now(.:format) resque_web/plugins/resque_scheduler/delayed#cancel_now
clear POST /delayed/clear(.:format) resque_web/plugins/resque_scheduler/delayed#clear
Routes for ResqueWeb::Engine:
resque_web_plugins_resque_scheduler /scheduler ResqueWeb::Plugins::ResqueScheduler::Engine
overview GET /overview(.:format) resque_web/overview#show
working_index GET /working(.:format) resque_web/working#index
clear_queue PUT /queues/:id/clear(.:format) resque_web/queues#clear {:id=>/[^\/]+/}
queues GET /queues(.:format) resque_web/queues#index
queue GET /queues/:id(.:format) resque_web/queues#show {:id=>/[^\/]+/}
DELETE /queues/:id(.:format) resque_web/queues#destroy {:id=>/[^\/]+/}
workers GET /workers(.:format) resque_web/workers#index
worker GET /workers/:id(.:format) resque_web/workers#show {:id=>/[^\/]+/}
retry_failure PUT /failures/:id/retry(.:format) resque_web/failures#retry
retry_all_failures PUT /failures/retry_all(.:format) resque_web/failures#retry_all
destroy_all_failures DELETE /failures/destroy_all(.:format) resque_web/failures#destroy_all
failures GET /failures(.:format) resque_web/failures#index
failure GET /failures/:id(.:format) resque_web/failures#show
DELETE /failures/:id(.:format) resque_web/failures#destroy
stats GET /stats(.:format) resque_web/stats#index
stats_resque GET /stats/resque(.:format) resque_web/stats#resque
stats_redis GET /stats/redis(.:format) resque_web/stats#redis
stats_keys GET /stats/keys(.:format) resque_web/stats#keys
keys_statistic GET /stats/keys/:id(.:format) resque_web/stats#keys {:id=>/[^\/]+/}
root GET / resque_web/overview#show