Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails capistrano故障-cap部署在哪里定义?_Ruby On Rails_Capistrano - Fatal编程技术网

Ruby on rails capistrano故障-cap部署在哪里定义?

Ruby on rails capistrano故障-cap部署在哪里定义?,ruby-on-rails,capistrano,Ruby On Rails,Capistrano,我运行的cap deploy失败,我认为这是因为格式问题。以下是一些输出: * executing "rm -rf /var/www/cap-deploy/socialmit/releases/20101215141011/log /var/www/cap-deploy/socialmit/releases/20101215141011/public/system /var/www/cap-deploy/socialmit/releases/20101215141011/tmp/pids &am

我运行的
cap deploy
失败,我认为这是因为格式问题。以下是一些输出:

* executing "rm -rf /var/www/cap-deploy/socialmit/releases/20101215141011/log /var/www/cap-deploy/socialmit/releases/20101215141011/public/system /var/www/cap-deploy/socialmit/releases/20101215141011/tmp/pids &&\\\n      mkdir -p /var/www/cap-deploy/socialmit/releases/20101215141011/public &&\\\n      mkdir -p /var/www/cap-deploy/socialmit/releases/20101215141011/tmp &&\\\n      ln -s /var/www/cap-deploy/socialmit/shared/log /var/www/cap-deploy/socialmit/releases/20101215141011/log &&\\\n      ln -s /var/www/cap-deploy/socialmit/shared/system /var/www/cap-deploy/socialmit/releases/20101215141011/public/system &&\\\n      ln -s /var/www/cap-deploy/socialmit/shared/pids /var/www/cap-deploy/socialmit/releases/20101215141011/tmp/pids"
(很抱歉设置了格式。)

&&\\\n
事情看起来很可疑,确实将它们转储到我的控制台会导致输出“\n:command not found”


cap deploy
在哪里定义?这个问题似乎与它被定义为一个未正确格式化的命令列表有关,导致了一个无关的换行符,它正在抛出一些东西。但是我找不到
capdeploy
的实际代码来修复它。它似乎不是特定于应用程序的东西,因为它不在我的Capfile或Capfile引用的任何文件中。

部署任务在gem中定义


我想说这很可能不是问题所在。部署失败时会引发什么错误?

问题是,一些在符号链接后命名为
的用户定义任务必须重命名,并在符号链接后调用(“部署:符号链接”,“部署:新名称”)
语法:

问题:

namespace :deploy do
  desc "Symlink the upload directories"
  task :after_symlink do
    #run "mkdir -p #{shared_path}/uploads"
    run "ln -s #{deploy_to}/shared/db #{deploy_to}/#{current_dir}/db/link"
  end
end
错误(实际上是警告):

正确的做法:

namespace :deploy do
  desc "Symlink the upload directories"
  task :link_db do
    #run "mkdir -p #{shared_path}/uploads"
    run "ln -s #{deploy_to}/shared/db #{deploy_to}/#{current_dir}/db/link"
  end
end

after("deploy:symlink", "deploy:link_db")

\\\n
业务的问题是我的误诊。很显然,这执行得很好。

谢谢您的链接。事实上,问题与capistrano没有执行符号链接命令有关,因为它被定义为在symlink之后(约定已更改)。在下面的解决方案中添加更多详细信息。
namespace :deploy do
  desc "Symlink the upload directories"
  task :link_db do
    #run "mkdir -p #{shared_path}/uploads"
    run "ln -s #{deploy_to}/shared/db #{deploy_to}/#{current_dir}/db/link"
  end
end

after("deploy:symlink", "deploy:link_db")