ファイルを編集したら自動で、リモートサーバーにファイルアップ
最近ブログの更新が滞っています。
新しいことをあまりやってないって事が原因でしょうが。。。
久々に新しいライブラリ?を作ったので紹介します。
pikonori/auto_sftp · GitHub
どのようなものかというと、ローカルのファイルを更新したら、自動でリモートサーバーにファイルをアップするライブラリです。
大抵の開発者はローカルで開発してローカルで動作確認を行うと思います。
しかし、うちの会社ではサーバーの設定が特殊なために、最終チェックはリモートサーバーにアップして確認します。
いつもはFTPクライアントで階層変えてアップして確認していたのですが、コレが非常に面倒くさい!
そこで、全て自動でファイルをアップできるようにしました。
(社内ではものすごく好評ですw)
FTPではなくSFTPにてアップします。
FTPの対応はしていません。
導入手順
1. 兎にも角にもbundler を入れます。
$ gem install bundler
2. pikonori/auto_sftp · GitHub からcloneしてきます。
DLでも大丈夫ですが、頻繁に更新する予定ですので、cloneしておいたほうが良いです。
落とす先は好きなところでOKです。
$ git clone https://github.com/pikonori/auto_sftp.git
3. sftp.yaml.defaultを編集します。
まずsftp.yaml.defaultをsftp.yamlにリネームします。
sftp.yamlの中身を確認すると、
sample: ip: localhost port: 22 user: admin password: password local_path: ~/ remote_path: /var/www/html/
となっていますので、リモートサーバーの設定等を行います。
以下が内容となります。
名称 | 内容 |
sample | 任意の名称です。コマンドを叩く際に指定します。 |
ip | リモート先のIPです。ドメインでも構いません。 |
port | ポートです。デフォルトは22になっています。 |
user | リモートサーバーのユーザー名です。 |
password | リモートサーバーのパスワードです。 |
local_path | 監視するローカルディレクトリです。ディレクトリ階層以下全てを監視します。 |
remote_path | リモートサーバーのパスです。 |
※ローカルパス以下のファイルが多すぎるとCPUを食いまくるので、ファイルが多い場合はディレクトリを絞って下さい。
複数設定する場合は、
sample: ip: localhost port: 22 user: admin password: password local_path: ~/ remote_path: /var/www/html/ sample2: ip: localhost port: 22 user: admin password: password local_path: ~/ remote_path: /var/www/html/
のように追加していきます。
4. 動作させます。
sftp.rb があるディレクトリに移動します。
移動後に以下のコマンドを叩きます
$ ruby sftp.rb -f sample C: create U: update D: delete E: error Name sample Host HostName Accepted 2013-10-09 09:49:17 +0900
上記のような文字列が出たら監視開始になります。
コレでファイルを修正するたびにファイルがアップされるようになります。
5. aliasを設定する。
ここからはMacやLinux専用になります。
(Windowsの方はbatとかを作成しておくと便利です。)
~/.bashrcを開きます。そこに
alias auto_sftp='ruby ~/sftp/sftp.rb'
の用な感じでaliasを設定しましょう。
これで
$ auto_sftp -f sample
で起動できるようになります。
まとめ
他にも機能がありますので、
$ auto_sftp -h
で確認してみて下さい。
将来的にgem installなどで簡単に導入できるように修正します。
(あと、テストケースも書かないとw
コードも汚いです。/(^o^)\)
導入できなかったり、動作不備がありましたら、気軽にコメントして下さい。