Я пытаюсь использовать глобальные константы в приложении Rails 4 для проверки определенных элементов, таких как электронные письма, этнические группы и т. Д. Я следил за подходом, описанным в переполнении стека статья "How do you store custom constants in Rails 4", без успеха.Rails 4 константы - ошибка «Unitialized constant»
Я определил файл lib/constants.rb
как место для всех констант приложения. В моем config/application.rb
файл я включил следующий код:
module Foo
class Application < Rails::Application
# extraneous code omitted
config.autoload_paths << Rails.root.join('lib') # added this line to include lib directory
end
end
Я попробовал несколько вариантов для определения и загрузки констант, но я все еще получаю ошибки.
Попытка 1: создан файл lib/constants.rb
с кодом, задающий константу:
ETHNIC_GROUPS = ["N/A", "African American/Black", "American Indian", "Hispanic", "Puerto Rican",
"Alaskan Native", "Asian American/Pacific Islander", "Mexican American/Chicano"]
Попытка 2: На основе обсуждения в статье "Auto-loading lib files in Rails 4" я изменил имя файла и код немного, чтобы попытаться загрузить константы другой путь. За эту статью я определил файл lib/Foo.rb
(совпадает с именем приложения в config/application.rb
):
module Foo
# Define custom constants for the application
ETHNIC_GROUPS = ["N/A", "African American/Black", "American Indian", "Hispanic", "Puerto Rican",
"Alaskan Native", "Asian American/Pacific Islander", "Mexican American/Chicano"]
end
Это выглядит, как это было по существу обезьяны патч, или добавить к существующему модулю Foo, определенный в config/application.rb
- мое предположение, во всяком случае ,
Я перезапустил сервер, перезагрузил консоль и т. Д. После каждого изменения. Независимо от того, сколько раз я делаю это, я продолжаю получать неинициализированную постоянную ошибку. В консоли, я попытался назвать оба ETHNIC_GROUPS
и Foo::ETHNIC_GROUPS
без успеха.
Оцените понимание лучших практик работы с глобальными константами приложения в Rails 4, а также понимание того, почему это не работает для меня.
Вы можете вставить его в config/initializers ... –