我有一个capistrano任务,它在deploy.rb中是这样执行的:
after 'deploy:update_code', 'deploy:create_symlink'任务:
Capistrano::Configuration.instance.load do
namespace :deploy do
task :create_symlink do
run "touch #{shared_path}/somefile.yml"
run "ln -nfs #{shared_path}/somefile.yml #{release_path}/config/somefile.yml"
end
end
end配置从somefile.yml加载,如下所示:
customconf = OpenStruct.new(YAML::load_file(File.join(Rails.root, 'config', 'somefile.yml'))[Rails.env]||{})我遇到的问题是配置被加载到config/initializers/customconfig.rb中。但是符号链接似乎是在customconfig.rb中的代码创建之后创建的。
这是我在尝试设置部署上限时遇到的错误:
Errno::ENOENT:没有这样的文件或目录- /var/www/vhosts/mysite/rails/releases/20170705083649/config/somefile.yml
基本上,在创建符号链接之后,我如何从somefile.yml加载配置。或者,我如何在初始化器执行之前运行cap任务?
发布于 2017-07-05 18:00:11
我通过在after 'deploy:finalize_update'之后更改after 'deploy:update_code'来解决我的问题。但我想问一下,在我接受这个答案之前,这是不是正确的方法。
https://stackoverflow.com/questions/44922429
复制相似问题