2013-06-09 12 views
29

W nowej aplikacji rails 4 otrzymuję niezmienny stały błąd dla modułu. Moduł o nazwie ProcessBill i znajduje się w lib/process_bill.rbRails 4 niezainicjowana stała dla modułu

błędzie konsola:

ActionController::RoutingError (uninitialized constant BillsController::ProcessBill): 

kod kontrolera:

class BillsController < ApplicationController 

    include ProcessBill 

lib/process_bill.rb

module ProcessBill 

Odpowiedz

54

Czy dodałeś bibliotekę do ścieżki automatycznego ładowania? Było to konieczne w Rails 3, nie jestem pewien, czy to nadal wymagane dla Rails 4.

warto dodać to do definicji klasy w config/application.rb -

config.autoload_paths += %W(#{config.root}/lib) 
3

Spróbuj dodać tę linię na górze kontrolera:

require "#{Rails.root}/lib/process_bill.rb" 
+3

Można też nie tylko „require«process_bill», jak katalog 'lib' znajduje się już na ścieżce ładowania –

+6

uważaj, zabije to przeładowanie! – reto

23

miałem ten problem też z katalogu lib z Rails 5 i pojawił się w produkcji, ale nie w fazie rozwoju. Aby to naprawić, musisz dodać katalog lib do ścieżek eager_load_paths. Tutaj jest odpowiednia część mojego environment.rb:

config.autoload_paths << "#{Rails.root}/lib" 
config.eager_load_paths << "#{Rails.root}/lib" 
+3

W tym artykule wyjaśniono, dlaczego: http://collectiveidea.com/blog/archives/2016/07/22/solutions-to-potential -upgrade-problems-in-rails-5/ – lucke84

+1

działa również w Railsach 4 –

1

To będzie także działać w Rails 5 w pliku environment.rb:

config.autoload_paths << Rails.root.join('lib') 
    config.autoload_paths << Rails.root.join('lib/notifier') 
Powiązane problemy