使用Capistrano 3设置默认阶段

时间:2014-01-08 21:26:17

标签: ruby-on-rails ruby capistrano

有没有办法在Capistrano 3中设置默认阶段?

我已经尝试将set :stage, :production放在deploy.rb中,但这不起作用,它会出错:

Stage not set, please call something such as `cap production deploy`,
where production is a stage you have defined

我现在只有一个阶段,所以我希望能够只运行cap deploy并让它在默认情况下执行。

5 个答案:

答案 0 :(得分:32)

Capistrano v3在某种程度上是Rake的包装器,所以你需要意识到真正发生的事情是先运行production任务,然后执行deploy任务。

如果稍微调试一下,当你没有输入某个阶段时,你会发现deploy.rb没有被加载。这是因为阶段的任务是加载deploy.rb:查看lib/setup.rb,为每个阶段定义一个任务。运行时,舞台的任务集:stage,加载capistrano默认值,然后最终加载deploy.rb文件。

所以,一个简单的伎俩就是告诉Capistrano每次运行cap时调用阶段任务,将其添加到Capfile的末尾(你的deploy.rb):

Rake::Task[:production].invoke

或者,使用Capistrano的DSL中的invoke方法:

invoke :production

如果您确实使用多个阶段,这可能会产生一些意想不到的后果,但如果您只使用production阶段,它应该可以正常工作。

另一个简单的解决方案可能是一个简单的shell别名,例如alias cap='cap production',但如果您有多个具有不同阶段名称的项目,它可能不会很好。

答案 1 :(得分:3)

cd进入RAILS根目录后,发出命令:

cap development deploy

似乎有效。之前我在app / models文件夹中,发出命令时出现了这个错误:

Stage not set, please call something such as cap production deploy, where production is a stage you have defined.

答案 2 :(得分:2)

旧的解决方案适用于Capistrano 3:

cap --version
#=> Capistrano Version: 3.3.5 (Rake Version: 10.4.2)

在这些行之后Capfile的最顶部

# Load DSL and Setup Up Stages
require 'capistrano/setup'

添加:

set :stage, :production

然后像往常一样运行任务而不指定阶段:

cap foo:bar

答案 3 :(得分:1)

capistrano 3.6+的新答案: 最好使用<Marker title={marker.id} id={marker.id} position={marker.position} isOpen={marker.isOpen} onClick={ () => { props.handleMarkerTap(marker) console.log(marker.id+" is "+marker.isOpen); // Call the setState method to cause a re-render. Pass a // copy (achieved via [... ] syntax) of the markers array // to setState to ensure that react sees the markers array // as a new array rather than a reference to the same array // (this also encourages react to re-render) this.setState({ markers : [...this.state.markers] }) } }> 来避免使用invoke :production unless Rake.application.options.show_tasks

会收到的警告

答案 4 :(得分:-1)

您可以将以下行添加到deploy.rb中,这会阻止Capistrano预期某个阶段:

set :stages, ["production"]
相关问题