У меня есть много контроллеров, которые одинаково названные в different namespaces:Неверное выравнивание суперкласса окружающей среды, включая папку lib?
Marketplace::ProductsController < ApplicationController
Office::Marketplace::ProductsController < Office::BaseController
API::V2::Marketplace::ProductsController < BaseController
, которые работают хорошо с rails s
и rails c
, как модульных тестов и огурца испытаний.
Однако, поскольку я следовал getting started with ActiveJob tutorial и пытался выполнить команду QUEUE=* rake environment resque:work
, он вызывает следующую ошибку.
TypeError: superclass mismatch for class ProductsController
Кажется, как будто спасательный не устраивают об этих двух одинаково названных контроллерах - пространство имен они могут быть - унаследовав от различных классов. Есть ли причина, по которой rake environment
жалуется на каждую другую задачу рейка, и рельсы в порядке с ней.
Update 1:
Я обнаружил, что для API::V2::Marketplace::ProductsController
определяется следующим образом:
module API
module V2
class Marketplace::ProductsController < BaseController
end
end
end
После того, как я изменил его ниже, ошибка, кажется, была решена.
class API::V2::Marketplace::ProductsController < API::V2:BaseController
end
Между тем Marketplace::ShopsController
и API::V2::Marketplace::ShopsController
не имеет никаких проблем, даже если последний был определен как ниже
module API
module V2
class Marketplace::ShopsController < BaseController
end
end
Ошибка теперь о некоторых Rspec файлов в моей lib
папке. Я добавил некоторую папку lib, которая немного связана с базой кода, но не используется. По-видимому, он пытается загрузить эти файлы и дать мне такую ошибку, когда вышла команда QUEUE=* rake environment resque:work
.
NoMethodError: undefined method `describe' for main:Object
Как только я удалил эти устаревшие файлы из папок lib, я не получаю ошибок.
Входит ли rake environment
все из lib? Я нахожу это недоверием, так как все другие задачи грабли, которые я выполнял, ничего не делают.
Update 2:
Хотя при ближайшем рассмотрении с --trace
. Я мог видеть мое сообщение puts
вот так.
** Invoke environment (first_time)
** Execute environment
** Invoke resque:work (first_time)
** Invoke resque:preload (first_time)
** Invoke resque:setup (first_time)
** Execute resque:setup
** Execute resque:preload
** My puts message.**
** Invoke resque:setup
** Execute resque:work
resque:preload
похоже на виновника. В любом случае, я могу исправить это из жадно, включая все?
Я добавил еще одно обновление, которое обнаружило 'resque: preload' как преступника. Любой способ остановить его от жадно загружать все? – mmhan