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="
это оно