Rails 4 неинициализированная константа для модуля
В новом rails 4 app я anm получена неинтеллизированная постоянная ошибка для модуля. Модуль называется ProcessBill и находится в lib/process_bill.rb
Ошибка консоли:
ActionController::RoutingError (uninitialized constant BillsController::ProcessBill):
код контроллера:
class BillsController < ApplicationController
include ProcessBill
Библиотека/process_bill.rb
module ProcessBill
Ответы
Ответ 1
Вы добавили lib в свой путь автозагрузки? Это было необходимо в Rails 3, я не уверен, что это все еще требуется для Rails 4.
Попробуйте добавить это в определение класса в config/application.rb
-
config.autoload_paths += %W(#{config.root}/lib)
Ответ 2
У меня тоже была проблема с каталогом lib с Rails 5, и он появился в производстве, но не в разработке. Чтобы исправить это, вам нужно добавить каталог lib в eager_load_paths. Вот соответствующая часть моего приложения .rb:
config.autoload_paths << "#{Rails.root}/lib"
config.eager_load_paths << "#{Rails.root}/lib"
Ответ 3
Попробуйте добавить эту строку в верхнюю часть вашего контроллера:
require "#{Rails.root}/lib/process_bill.rb"
Ответ 4
Это также будет работать в Rails 5 в вашем файле application.rb:
config.autoload_paths << Rails.root.join('lib')
config.autoload_paths << Rails.root.join('lib/notifier')