Тестирование Rails не загружает файл конфигурации пользовательского приложения

Я только изучаю тестирование Rails и не могу запускать ЛЮБЫЕ тесты (даже примеры «assert true»), потому что я получаю сообщение об ошибке из-за того, что несвязанная модель не может загрузить пользовательскую переменную файла конфигурации.

В моем приложении есть настраиваемый файл конфигурации, загруженный для этого эпизода Railscast (http://railscasts.com/episodes/85-yaml-configuration-file) в environment.rb

APP_CONFIG = YAML.load_file("#{::Rails.root.to_s}/config/config.yml")[RAILS_ENV]

Это нормально в обычном приложении, но при тестировании оно не загружается в модель:

    has_attached_file :photo,
                      :bucket => APP_CONFIG['s3_bucket']

Ошибка консоли: `const_missing_from_s3_library ': неинициализированная константа Asset :: APP_CONFIG (NameError)

(Следует отметить, что это НЕ та модель, которую я пытаюсь протестировать, но я предполагаю, что среда тестирования запускает все приложение?)

Чем отличается среда тестирования, в которой не запускается environment.rb?


person user478798    schedule 24.08.2011    source источник
comment
Как выглядит ваш конфигурационный файл?   -  person Deradon    schedule 25.08.2011
comment
разработка: upgrade_price: 24 root_url: localhost: 3000 # и т. д. test: upgrade_price: 24 root_url: localhost: 3000 # и т. д.   -  person user478798    schedule 25.08.2011


Ответы (2)


Я сам в этом разобрался, потому что у Heroku и тестовой среды есть одна общая черта:

Heroku НЕ загружает environment.rb перед моделями, как и среда тестирования.

Все мои контроллеры нормально загружали указанные выше пользовательские конфигурационные переменные (в dev и Heroku), но как только модель попыталась загрузить один из них в Heroku или при тестировании, она испугалась.

Урок: для Heroku используйте их настраиваемые переменные конфигурации и ссылайтесь на них с помощью ENV ['name' ] и добавьте 'export name = "something"' в свой .bash_profile

(Или попробуйте это)

person user478798    schedule 25.08.2011

Я поместил свой в конец application.rb (rails 3.2), и он отлично работал на Heroku.

person pixelearth    schedule 06.02.2013