2011-02-14 84 views
10

我試圖使用evernote gem來訪問Evernote API。在這些指令,它說,創建一個包含API帳戶細節的配置文件,然後加載配置文件如下:如何從配置文件夾加載文件?

config = File.dirname(__FILE__) + "/config.yml" 
user_store = Evernote::UserStore.new(user_store_url, config, "sandbox") 

我創建的配置文件夾中的文件evernote.yml,並把下面的代碼在pages_controller.rb

config = File.dirname(__FILE__) + "/evernote.yml" 
user_store = Evernote::UserStore.new(user_store_url, config, "sandbox") 

home行動當運行的代碼,我得到這個錯誤二號線

Errno::ENOENT in PagesController#home 
No such file or directory - /Users/ben/rails_projects/evernote_app/app/controllers/evernote.yml 

如何在不發生此錯誤的情況下加載配置文件?

回答

15

的問題是,File.dirname(__FILE__)點到當前文件,這恰好是一個控制器的目錄。你想指向你的rails根目錄下的config目錄。爲了使這項工作,我會做到以下幾點:

config = File.join(Rails.root, 'config', 'evernote.yml') 
user_store = Evernote::UserStore.new(user_store_url, config, "sandbox") 
7

試試這個,

 
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應用程序的根文件夾的路徑

1

我需要一個配置是關於曾經與我合作過的Rails應用程序。下面是我用的,把這個在配置/應用程序的模塊定義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配置文件,它可以是,如果你有用想在配置中使用ruby變量和東西。

相關問題