【问题标题】: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】:

对我有用的是:

  1. 在config/routes.rb 中挂载 ResqueWeb,如下所示:

    require "resque_web"
    Rails.application.routes.draw do
      mount ResqueWeb::Engine => "/resque/"
      root 'resque_web/overview#show'
    end
    
  2. 在config/application.rb中设置相对URL根:

    config.relative_url_root = '/resque'
    
  3. 更新 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

【讨论】:

    猜你喜欢
    • 2014-11-21
    • 1970-01-01
    • 1970-01-01
    • 2013-12-02
    • 1970-01-01
    • 1970-01-01
    • 2011-07-05
    • 1970-01-01
    • 2014-05-15
    相关资源
    最近更新 更多