【问题标题】:php-resque-scheduler and resque-web interface URI::InvalidURIError at /delayedphp-resque-scheduler 和 resque-web 接口 URI::InvalidURIError at /delayed
【发布时间】:2014-11-22 02:16:44
【问题描述】:

我正在使用 Chris Boulton 的 resque (php-resque) 和 resque-scheduler (php-resque-scheduler) 的 php 端口,我还使用标准的 resque-web 界面来查看作业/队列等。

在我最近安装 resque-scheduler 并按照说明 here 为 resque-web 设置配置之前,我对 resque-web 没有任何问题。

使用 php-resque-scheduler 我没有任何问题(似乎)安排我的队列延迟,但是当我登录 resque-web 并单击“延迟”选项卡时,我收到以下错误:

URI::InvalidURIError at /delayed 错误的 URI(不是 URI?):/delayed/jobs/Namespace\Of\Job\Class?args=[%7B%22

只有在将作业设置为延迟后,我才会收到此错误。

我的感觉是 PHP 类的命名空间正在破坏 resque-web 路由。我有点难过,因为我对 Ruby 不太熟悉,也不热衷于编辑包文件等。

如果有帮助,我正在 Ubuntu Trusty 14.04 上运行 ruby​​ 1.9.1。做resque-web -v给了我:

机架 1.2

sinatra 1.4.5

拉斯维加斯 0.1.11

对此的任何帮助将不胜感激!

更新:我尝试为该作业的类设置别名并通过别名类传递,这不会破坏接口,所以我认为我最初的假设是正确的。这不是一个真正的解决方案,但可行。

【问题讨论】:

    标签: php ruby resque resque-scheduler


    【解决方案1】:

    我的解决方案是在 php 中为类设置别名并将别名传递给作业:

    class_alias('My\NameSpaced\Class', 'My_NameSpaced\Class');
    

    【讨论】:

      【解决方案2】:

      我也有这个问题,原因是resque-web试图获取类名的URI,但是你的类名有反斜杠,是因为PHP命名空间,所以ruby说“Bad URI”,重点是ruby没有't help us to escape the uri.

      我不熟悉 Ruby/Rails,我只是尝试将 resque 集成到 php,所以我只需要 web 监视器来查看我的队列/作业状态

      所以这是我解决此问题的解决方法,仅供参考,我知道这不是最好的方法。

      尝试在 gem 资源中修改 resque-scheduler 的视图

      // find your resque-scheduler gem path and modify the delayed.erb file
      vim ~/.gem/ruby/2.0/gems/resque-scheduler-4.0.0/lib/resque/scheduler/server/views/delayed.erb
      
      // search this line
      URI("/delayed/jobs/#{job['class']}?args="
      
      // modify to
      URI.escape("/delayed/jobs/#{job['class']}?args="
      

      就是这样

      【讨论】:

        猜你喜欢
        • 2014-09-30
        • 2012-11-07
        • 2011-01-25
        • 1970-01-01
        • 1970-01-01
        • 2016-05-29
        • 2013-12-05
        • 1970-01-01
        • 2014-03-17
        相关资源
        最近更新 更多