Capistrano でローカルにファイルをコピーするだけの方法

2019/01/19 追記

現時点だと、以下の方法でよいかと思います。

たとえば、config/deploy/production.rb の内容は以下のようになります。

set :stage, :production
set :branch, :master
set :deploy_to, "/KOKONI/DEPLOY/SHIMASU"
set :sshkit_backend, SSHKit::Backend::Local
server 'localhost'

したがって、以下の内容は非推奨になります。


結論

1. capistrano-scm-copy をインストールする

まずcapistrano-scm-copyというgemをインストールします。

$ gem install capistrano-scm-copy

2. Capfile で capistrano/copy を require する

Capfileの中でrequire 'capistrano/copy'します。

記載する場所はrequire "capistrano/deploy"より下でないとLoadError: cannot load such file -- capistrano/copyと怒られるので注意です。

3. deploy.rb に set :scm, :copy と書く

deploy.rbscmの指定では、set :scm, :copyと書きましょう。

4. cap production deploy する

あとは$ cap production deploy などとするだけです。

もちろんdeploy.rbset :deploy_to, '/var/tmp/foobar'と書いたりしないとダメですが、そこは今回の本質ではないので省略しています。

参考

ここまで書いたことで不足していることの詳細は以下の記事に大変詳しくまとまっています*1

補足

今の Capistrano だと以下のように deprecated と言われます。詳しい状況については Issue にも上がっています

[Deprecation Notice] `set :scm, :copy` is deprecated.
To ensure this custom SCM will work with future versions of Capistrano,
please upgrade it to a version that uses the new SCM plugin mechanism
documented here:

http://capistranorb.com/documentation/advanced-features/custom-scm

SCM って何の略?

  • Source Code Management

*1:丸投げです

Powered by はてなブログ