部署 在 /config 目录里添加了 config.yml 文件, 文件里定义了 CONFIG 常量,但 capistrano 在部署时出了问题

tiseheaini · 2014年04月17日 · 最后由 tiseheaini 回复于 2014年04月17日 · 2548 次阅读

看到 campo 项目中有将 一些配置信息写到一个单独文件中,于是效仿 @rei 的方式改写了代码,但在 capistrano部署时出了问题 在 /config/initializers/ 目录里添加了 00_config.rb 文件,文件里定义了 CONFIG 常量。 在 /config 目录里添加了 config.yml 文件,文件里写信息,但 capistrano 在部署时出了问题 因为 config.yml 文件中有一些密码信息,所以没有放到到 git 里,于是我在 capistrano 里写了一个 task 来软链接文件

task :copy_config_yml, :roles => :app do
run "ln -s /home/#{user}/script/config.yml #{release_path}/config/config.yml"
end
after 'deploy:update_code', "deploy:copy_config_yml"

capistranoassets:precompile 时出错了,提示 uninitialized constant CONFIG 我猜想是 assets:precompile 加载时 config.yml 没有在项目目录里,如果不是在 deploy:update_code 之后软链接,那应该在什么时刻软连接。

campo 项目中用的 capistrano 是 v3,我还没有升级 capistrano ,用的是老版本 2。希望 @rei 指点一下。

第一次部署之前要先准备好目录和这几个文件。我是放在 ./script/setup.sh 里面做的

https://github.com/chloerei/campo/blob/master/script/setup.sh#L48

#1 楼 @Rei ./script/setup.sh 是在什么时间运行,或者是说,我把文件复制到 shared 文件夹中,但每次部署时,项目目录下面还是没有 config.yml 或者 00_config.yml 文件,这两个文件是在什么时刻复制到项目目录里的?

#1 楼 @Rei 很抱歉,我在 /config/environments/production.rb 中用到了 CONFIG,我没弄清楚 rails 的加载顺序,犯了低级错误

#2 楼 @tiseheaini 我第一次部署会手工 ssh 到服务器,把项目 clone 下来,然后 ./script/setup.sh

#4 楼 @Rei 很感谢你回答我的问题,刚才那个问题是出在我没弄清楚 rails 的加载顺序 在 /config/initializers/ 里面定义的常量没办法在 /config/environments/ 里面使用。谢谢 rei

需要 登录 后方可回复, 如果你还没有账号请 注册新账号