php-resque-scheduler и resque-web интерфейс URI::InvalidURIError at /delayed

Я использую php-порт resque (php-resque) и phque-планировщика ( php-resque-scheduler) Криса Боултона, а также использую стандартный веб-интерфейс resque для просмотра заданий / очередей и т. Д.

У меня не было никаких проблем с resque-web, пока я недавно не установил resque-scheduler и не настроил конфигурацию для resque-web согласно инструкциям здесь.

Используя php-resque-scheduler, у меня нет проблем (кажется) с планированием отложенных очередей, однако, когда я вхожу в resque-web и нажимаю на вкладку "delayed", я получаю следующую ошибку:

URI:: InvalidURIError at / delayed bad URI (это не URI?): / Delayed/jobs/ Пространство имен \Of\Job\Class? Args=[%7B%22

Я получаю эту ошибку только после того, как задание было отложено.

У меня такое ощущение, что пространство имен класса PHP что-то ломает с помощью веб-маршрутизации resque. Я немного озадачен, так как я не очень хорошо знаком с Ruby и не заинтересован в редактировании файлов пакетов и т. Д.

Я использую ruby ​​1.9.1 на Ubuntu Trusty 14.04, если это поможет. дела resque-web -v дает мне:

стойка 1.2

Синатра 1.4.5

Вегас 0.1.11

Любая помощь по этому вопросу будет высоко ценится!

ОБНОВЛЕНИЕ: я попытался наложить псевдоним класса для задания и пропустить псевдоним класса, и это не нарушает интерфейс, поэтому я считаю свое первоначальное предположение правильным. Это не совсем решение, но работоспособное.

2 ответа

Решение

Моим решением было создать псевдоним класса в php и передать псевдоним на работу:

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

У меня тоже есть эта проблема, причина в том, что resque-web пытается получить URI имени класса, но имя вашего класса имеет обратную косую черту, это из-за пространства имен PHP, поэтому ruby ​​сказал "Bad URI", суть в том, что ruby ​​не помог нам убежать от Ури.

Я не знаком с Ruby/Rails, я просто пытаюсь интегрировать resque в php, поэтому мне просто нужен веб-монитор для просмотра моего состояния очереди / заданий

Итак, вот мой обходной путь, чтобы решить эту проблему, просто для справки, я знаю, что это не лучший способ.

Попробуйте изменить представление Resque-Scheduler в ресурсе Gem

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

это оно

Другие вопросы по тегам