12
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Capistranoの動作確認をローカルで行う方法

Last updated at Posted at 2018-01-08

はじめに

私がCapistranoの動作確認をローカルで行うために、使っている方法を紹介します。

以下のライブラリのバージョンで、このやり方が上手く行くことを確認しました:

  • Capistrano: v3.6〜v3.10
  • SSHKit: v1.11〜v1.15

やり方

①下のようなCapistranoの設定ファイルを用意します。パスはconfig/deploy/local.rbとします。

config/deploy/local.rb
set :deploy_to, "/path/to/app"
set :sshkit_backend, SSHKit::Backend::Local
server 'localhost'

cap local deployを実行します。

以上で、ローカルマシン上の/path/to/appにアプリケーションがデプロイ(コピー)されます。

サンプルコード

動作する完全なサンプルの例としては、 https://github.com/progrhyme/tutorials/tree/master/capistrano をご覧ください。

解説

※この解説は以下のバージョンのコードを前提とします:

  • Capistrano v3.10.1
  • SSHKit v1.15.1

SSHKitのDSLである#as, #with, #execute, #captureといったメソッドは抽象クラスSSHKit::Backend::Abstractで実装されています。
同じくSSHKitのDSLである#upload!, #download!等については、これを継承した具象クラスで実装するものとされています。

上のconfig/deploy/local.rbで設定した:sshkit_backend1は、デフォルトではSSHKit::Backend::Netsshに設定されます。
これは、capistrano/setup.rbから実行されるCapistrano::Configuraton#configure_backendによります。

SSHKit::Backend::Netsshは、net-sshを利用してリモートホストにSSH接続するバックエンドです。

この:sshkit_backendを明示的にSSHKit::Backend::Localに設定することで、通常リモートホストにSSH接続する操作をローカルマシン上で行うことができるようになります。

終わりに

私自身、Capistranoのプラグイン開発時や設定編集時にこの方法を利用してきました。

ただし、この方法で確認できるのはリモートとの通信を伴わない範囲なので、その辺りに影響するような変更や開発を行う際は、別の動作確認が必要と考えます。

リモートとの通信に関係しない部分の変更・開発時には、有用な動作確認方法だと思います。

参考

脚注

  1. 正確には、SSHKitのクラス変数@@configが示すSSHKit::Configurationインスタンスの@backendメンバ変数。

12
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?