Как загрузить файл из папки config?
Я пытаюсь использовать драгоценный камень evernote для доступа к API Evernote. В этих инструкциях говорится о создании файла конфигурации, содержащего данные учетной записи API, а затем загрузите файл конфигурации следующим образом:
config = File.dirname(__FILE__) + "/config.yml"
user_store = Evernote::UserStore.new(user_store_url, config, "sandbox")
Я создал файл evernote.yml
в папке config и поместил следующий код в действие home
в pages_controller.rb
config = File.dirname(__FILE__) + "/evernote.yml"
user_store = Evernote::UserStore.new(user_store_url, config, "sandbox")
Когда код запускается, я получаю эту ошибку во второй строке
Errno::ENOENT in PagesController#home
No such file or directory - /Users/ben/rails_projects/evernote_app/app/controllers/evernote.yml
Как загрузить файл конфигурации без получения этой ошибки?
Ответы
Ответ 1
Проблема заключается в том, что File.dirname(__FILE__)
указывает на каталог текущего файла, который является контроллером. Вы хотите указать на каталог config под вашим корневым рельсом. Для выполнения этой работы я бы сделал следующее:
config = File.join(Rails.root, 'config', 'evernote.yml')
user_store = Evernote::UserStore.new(user_store_url, config, "sandbox")
Ответ 2
Попробуйте это,
config_file_path = "#{Rails.root}/config/config.yml"
# or this to load yaml directly
config = YAML::load(File.open("#{Rails.root}/config/config.yml"))
Rails.root
предоставляет путь к корневой папке приложения Rails
Ответ 3
У меня есть потребность в конфиге - это всегда приложение Rails, с которым я когда-либо работал. Здесь, что я использую, поставьте это в config/application.rb перед определением модуля вашего приложения:
# Load config/config.yml into APP_CONFIG
APP_CONFIG = YAML.load(ERB.new(IO.read(File.expand_path('../config.yml', __FILE__))).result)[Rails.env]
Основное отличие этой версии заключается в том, что она запускает файл конфигурации через ERB, что может быть полезно, если вы хотите использовать рубиновые переменные и прочее в конфигурации.