我有一个下面的配方(migrate.rb
),它作为我们部署的一部分运行并且运行良好。
然而,我无法解决的一件事是如何进行设置,以便它也可以作为execute_recipe
命令中的独立配方运行。
如果我们将这个配方作为独立执行,那么就没有任何事情发生,因为node[:deploy].each
无法循环(部署密钥不存在)..
实际依赖于部署节点的唯一部分是此行cwd "#{deploy[:deploy_to]}/current"
,因为我需要知道代码的部署位置。
node[:deploy].each do |application, deploy|
execute 'DB migrate then seed' do
cwd "#{deploy[:deploy_to]}/current"
command 'php artisan migrate; while read -r line || [ -n "$line" ]; do php artisan db:seed --class="$line"; done < "app/database/run.list"'
end
end
答案 0 :(得分:2)
我会将该部分重新定位到定义(或提供者)。所以基本上将你的食谱分成两部分:
食谱/ deploy.rb:
node[:deploy].each do |application, deploy|
php_artisan_setup do
dir "#{deploy[:deploy_to]}/current"
end
end
定义/ php_artisan_setup.rb:
define :php_artisan_setup do
execute 'DB migrate then seed' do
cwd params[:dir]
command 'php artisan migrate; while read -r line || [ -n "$line" ]; do php artisan db:seed --class="$line"; done < "app/database/run.list"'
end
end
通过这种方式,您可以从#34;独立&#34;中拨打php_artisan_setup
食谱也是。你仍然需要两个食谱,但你不必复制相关的部分。