Как сделать библиотеку доступной для всего приложения в Rails4

У меня есть ряд методов, которые я хотел бы сделать доступными для всего приложения. Основываясь на том, что я прочитал и исследовал, я сделал следующее:

1. Created a lib/app_lib.rb

и определил в нем некоторые методы.

2. In config/application.rb, I added the following lines:

    config.assets.enabled = true
    config.autoload_paths += %W(#{config.root}/lib)

Однако это не работает, так как когда я пытаюсь вызвать один из методов в любом из контроллеров или представлений, я получаю сообщение об ошибке:

undefined local variable or method ....

Это для рельсов 4.1


person Joseph Mouhanna    schedule 12.05.2014    source источник


Ответы (1)


в случае, если lib/app_lib.rb является модулем, вам необходимо включить его в контроллер вашего приложения!

person phoet    schedule 12.05.2014
comment
Например, добавить в application_controller.rb следующее: require 'lib/app_lib.rb'? - person Joseph Mouhanna; 12.05.2014
comment
Да, это решило проблему, хотя я думал, что автозагрузка также позаботится об этом. - person Joseph Mouhanna; 12.05.2014
comment
нет, не как в require ... скорее как в include ..... rails потребует от вас этот файл, если он соответствует соглашениям об именах rails, что означает, что содержимое app_lib.rb является классом AppLib или модулем AppLib. - person phoet; 12.05.2014