在capistrano deploy.rb中加载app_config.yml

时间:2013-10-22 14:32:52

标签: ruby-on-rails capistrano

使用Rails 3.2和Capistrano 2.我有一个app_config.yml我以这种方式加载到应用程序:

# 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"] %>

我想在Capistrano的部署脚本中加载相同的app_config.yml,这样我就不必再次重新设置变量了:

# 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 个答案:

答案 0 :(得分:1)

capistrano不需要任何铁轨代码。

这就是调用APP_CONFIG = YAML.load_file(File.expand_path('../app_config.yml', __FILE__))[Rails.env]引发异常的原因。

您需要将Rails.env替换为capistrano部署中使用的其他内容。可能是舞台,或只是"production",具体取决于您的设置。