ruby-on-rails – Capistrano 3 – 理解任务
我试图理解capistrano 3.1是如何工作的,但由于缺乏文档(它的capistrano,所以…),我的运行低于我的理解.
让我解释. 这是一个取自capistrano / rails gem的片段 namespace :deploy do desc 'Runs rake db:migrate if migrations are set' task :migrate => [:set_rails_env] do on primary fetch(:migration_role) do within release_path do with rails_env: fetch(:rails_env) do execute :rake,"db:migrate" end end end end #[...] end 当执行cap integration integration:migrate时,它会发送以下命令: 我将为delayed_job提供的(非工作)代码改为一点 namespace :delayed_job do def args fetch(:delayed_job_args,'') end def delayed_job_roles fetch(:delayed_job_server_role,:app) end def delayed_job_bin fetch(:delayed_job_bin,:'bin/delayed_job') end desc 'Restart the delayed_job process' task :restart do on roles(delayed_job_roles) do within release_path do with rails_env: fetch(:rails_env) do execute delayed_job_bin,'restart',args end end end end end 我得到以下命令cd / srv / winddle / current&& (RAILS_ENV =集成bin / delayed_job重启) 显然,它错过了bundle exec命令. 我找到的唯一解决方案是使用 欢迎任何适当的解决方案/解释. 解决方法
我实际上刚刚开始使用Capistrano并且还在努力避免缺少文档,所以很抱歉如果这篇文章错过了这个标记.
v3很依赖sshkit,所以阅读文档应该是一个很大的帮助.自述文件提供了一个可以解决您的问题的示例. SSHKit.config.command_map.prefix[:rake].push("bundle exec") puts SSHKit.config.command_map[:rake] # => bundle exec rake 我还在Semaphore blog post中找到了另一种解决方案. SSHKit.config.command_map[:rake] = "bundle exec rake" SSHKit.config.command_map[:rails] = "bundle exec rails" (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |