2013-10-22 29 views
1

使用Rails 3.2和Capistrano的2.我有一個app_config.yml我加載到應用程序是這樣的:負載app_config.yml在Capistrano的deploy.rb

# config/app_config.yml 
global: &GLOBAL 
    sitename: Shop 

# config/application.rb 
require File.expand_path('../boot', __FILE__) 
APP_CONFIG = YAML.load_file(File.expand_path('../app_config.yml', __FILE__))[Rails.env] 

# call using this method 
<%= APP_CONFIG["sitename"] %> 

我想要加載在我的部署腳本相同app_config.yml在Capistrano的,這樣我就不必再重新設置變量:

# config/deploy.rb 
require "bundler/capistrano" 

require File.expand_path('../boot', __FILE__) 
APP_CONFIG = YAML.load_file(File.expand_path('../app_config.yml', __FILE__))[Rails.env] 

set :stages, %w(production staging) 

我希望用這種方式過於訪問變量:APP_CONFIG["sitename"],但我運行部署腳本,我得到這個錯誤:

./config/deploy.rb:4:in `load': uninitialized constant Capistrano::Configuration::Rails 
(NameError) # points to the APP_CONFIG = YAML.load_file... line 

如何正確加載app_config.yml文件?

回答

1

capistrano不需要任何欄杆代碼。

這就是爲什麼呼叫APP_CONFIG = YAML.load_file(File.expand_path('../app_config.yml', __FILE__))[Rails.env]引發異常。

您需要用您的capistrano部署中使用的其他東西替換Rails.env。這可能是舞臺或只是"production"取決於您的設置。