Модуль ruby ​​rails 4.1 - несогласованная ошибка - не инициализирована "неинициализированная константа"

Я использую ruby ​​2.1.5 и rails 4.1 в следующей структуре папок:

- lib/
  - notifications/
    - notifications.rb
    - group_actions.rb


# notifications.rb
module Notifications

end


# group_actions.rb
class GroupActions
  self.do_something
end


# inside a controller
class Api::V1::PostsController < Api::BaseController
  include Notifications
  .
  .
  .
  def create
    Notifications::GroupActions.do_something
  end
  .
  .
  .
end

Я также добавил эту строку в "config/application.rb" для автозагрузки моего модуля

# config/application.rb
config.autoload_paths += %W(#{config.root}/lib/notifications)

Это прекрасно работает ИНОГДА, а в других случаях ломает и вызывает ошибку "Неинициализированная константа Notifications::GroupActions"

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

Я заметил, что он всегда работает при первом запросе после перезапуска сервера, если этот совет помогает.

пожалуйста помоги

1 ответ

Я могу ошибаться, но просто дикая догадка. Вы включаете модуль уведомлений (в этом конкретном коде - модуль уведомлений не имеет метода group_actions)

Я вижу, что Вы используете область уведомлений:: GroupActions.do_something.


Угадай 1: Внутри контроллера также есть GroupActions


Угадай 2: Внутри модуля уведомлений добавь еще один модуль

module Notifications
  module GroupActions
    def self.do_something

Угадай 3:

Попробуй наследовать.

module Notifications < GroupActions

или же

module GroupActions < Notifications

Надеюсь, что любое из этих решений поможет.

Если нет, извините:)

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