Ruby on rails Capistrano的默认部署位置不正确

Ruby on rails Capistrano的默认部署位置不正确,ruby-on-rails,capistrano,Ruby On Rails,Capistrano,我正在尝试使用Capistrano3.1.0进行部署 文件deploy.rb说明: 默认的部署到目录是/var/www/my\u-app 但是,当我运行cap production deploy时,会出现以下错误: mkdir:无法创建目录/var/www/shared 它似乎完全忽略了我的应用程序名,并试图在错误的位置创建目录。它应该尝试创建/var/www/myapp/shared/。我的deploy.rb文件具体包括: 设置:应用程序“myapp” 我是遗漏了什么,还是这是一个错误 更新:

我正在尝试使用Capistrano3.1.0进行部署

文件deploy.rb说明:

默认的部署到目录是/var/www/my\u-app

但是,当我运行cap production deploy时,会出现以下错误:

mkdir:无法创建目录/var/www/shared

它似乎完全忽略了我的应用程序名,并试图在错误的位置创建目录。它应该尝试创建/var/www/myapp/shared/。我的deploy.rb文件具体包括:

设置:应用程序“myapp”

我是遗漏了什么,还是这是一个错误

更新:Capistrano源代码的相关行似乎是:

set:deploy_to,/var/www/{fetch:application}


在defaults.rb中。如果我打印出fetch:application的值,那么它是nil,因此有东西阻止我正确设置应用程序名。

请确保您具有Capistrano所需的目录结构。您可以使用Capistrano本身通过以下命令创建它:

cap deploy:setup
或者,您可以直接使用以下内容创建它:

# Capistrano will use /var/www/....... where ... is the value set in
# :application, you can override this by setting the ':deploy_to' variable
deploy_to=/var/www/:application
mkdir -p ${deploy_to}
mkdir ${deploy_to}/{releases,shared}
参考:wiki和


编辑:如果在:应用程序之后将:deploy\u设置为,则不需要使用you。

结果表明,这是一个带有修复程序的bug,但尚未发布

这是零钱:


没错,它应该创建/var/www/myapp/shared。您是否可以尝试使用双引号而不是单引号,并将应用程序名称更改为更具描述性的名称。顺便说一句,这完全是猜测。set:application,rails\u application.仍然以双引号失败。我认为Capistrano源代码中的相关行是:set:deploy_to,/var/www/{fetch:application}。如果我打印出fetch:application的值,它是nil,这是一个问题,可以解释我看到了什么……设置后set:deploy_to/var/www/{application}application@Vimsha我猜这是可行的,但这应该是默认值,对吗?为什么要手动将其设置为应该已经具有的值?deploy_to不是默认设置。我检查了我所有的项目,我正在设置它。set:application=>app;set:deploy_to/var/www/{application}更新了我的答案,以显示在发布提交之前如何解决问题。提交仍然是必需的:默认:deploy_to设置在Capistrano的源代码中,必须由他们更改。这同样适用于由Capistrano控制的订单。除了覆盖我认为不正确的默认值之外,新的提交是最好的解决方案。虽然尚未在发行版中提供,但您可以从git获得最新的gem,其中包括所需的更改。@aardvarkk奇怪,我查看了所有的deploy.rb文件,它们都在:deploy_之前设置了:application name,一切正常。