40歳からのキャリアチェンジ

20代はエンジニア・PM、30代はWeb系エンジニア向けのキャリアアドバイザー。40代の今はフリーランスで開発含めて色々やってます。技術ネタとしてはRuby/RailsとJavaScript関連あたり

Capistranoでファイル転送

簡単な使い方はわかったので、早速本来やりたいCapistranoでのファイル転送に取り組んでみましたが、どうも理解があやふやなせいか、思ったようなことが出来てませんが、これまでやったことについて自分のためのメモ

単なるファイル転送

最初はhttp://d.hatena.ne.jp/kdaiba/20090518/p1:title=を参考にして

set :user, "userid"
role :test, "localhost"

desc "upload file"
task :upload!, :roles => :test1  do
  upload("target_file.txt", "/tmp", :via => :scp)
end

みたいな感じでuploadを使うことを試したのですが、これだとファイルを1つ1つ指定する必要がある感じがしたので、とりあえずこの書き方は断念

Capistrano関連の情報はたいていRailsアプリケーション配置に関するものが多く、自分が欲しい情報はRailsと違うディレクトリ構造のものをそのままリモートに配置するというシンプルなものだったので、中々イメージした情報が見つからなかったのですが、そんな中でhttp://d.hatena.ne.jp/TrinityT/20101209/1291860209:title=というのを見つけたり、その後
http://tech.camobile.com/develop_environment/%E6%89%8B%E8%BB%BD%E3%81%AB%E5%AE%89%E5%85%A8%E3%81%AA%E3%83%87%E3%83%97%E3%83%AD%E3%82%A4%E7%92%B0%E5%A2%83%E3%82%92%E6%A7%8B%E7%AF%89%E3%81%97%E3%81%9F%E3%81%84%E3%81%A8%E3%81%8D/656:title=というのを見つけてかなりイメージに近いものがヒットしました。

後者のブログを参考にすれば良いのかと思ってひとまずこんな感じのものを作りました

#config/deploy.rb
require "rubygems"
require "capistrano/ext/multistage"
set :application, "job_search"
set :scm, :git
set :repository,"localhost:/path/to/#{application}"
set :deploy_to,"/path/to/#{application}"
set :deploy_via, :copy
set :branch,      'master'
set :copy_strategy, :export
set :keep_releases, 5
#config/deploy/test_env.rb
set :user, "userid"
set :ssh_options, :port => "50022"
role :server, "localhost"
#config/deploy/test_env.rb
set :user, "userid"
set :ssh_options, :port => "50022"
role :server, "localhost"
#config/deploy/production.rb
set :user, "userid"
role :server, "xxxxxx"

ターミナルから

cap test_env deploy

とすれば、VirtualBox上の指定したパスに配置されていました。