2014-11-22 71 views
0

我正在使用Chris Boulton的php port of resque(php-resque)和resque-scheduler(php-resque-scheduler),我也使用標準的resque- web界面查看作業/隊列等php-resque-scheduler和resque-web界面URI :: InvalidURIError在/ delayed

我沒有任何問題,直到我最近安裝resque-scheduler併爲resque-web設置配置resque-web按照說明here

使用php-resque-scheduler我沒有任何問題(它似乎)安排我的隊列被延遲,但是當我登錄到resque-web並單擊「延遲」選項卡時出現以下錯誤:

URI::InvalidURIError at /delayed bad URI(is not URI?): /delayed/jobs/Namespace\Of\Job\Class?args=[%7B%22

一旦工作被設置爲延遲,我只會收到此錯誤。

我的感覺是,PHP類的命名空間是打破與resque-網絡路由的東西。我有點難倒我沒有大量熟悉Ruby和並不熱衷於編輯軟件包文件等

我運行1.9.1,在Ubuntu 14.04忠實的是否有幫助。做resque-web -v給我:

rack 1.2

sinatra 1.4.5

vegas 0.1.11

任何幫助這一個將不勝感激!

更新:我試過走樣作業的類,以及將別名類通過,並且不破壞接口,所以我覺得我原來的設想是正確的。這不是一個真正的解決方案,但是可行。

回答

1

我的解決辦法是別名在PHP中類和別名傳遞給工作:

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

我也有這個問題,原因是resque-web嘗試獲取類名稱的URI,但是你的類名稱有反斜槓,這是因爲PHP命名空間,所以ruby表示「錯誤的URI」,點是紅寶石沒有幫我們去轉義 uri。

我不熟悉的Ruby/Rails,我只是嘗試resque集成到PHP的,所以我只需要在網絡監視器所以在這裏看我的隊列/作業的狀態

是我的解決方法來解決這個問題,僅供參考,我知道這不是最好的方法。

嘗試修改resque調度的觀點在寶石資源

// 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=" 

就是這樣