capistranoでゴニョゴニョしたのでメモ
capistranoのレシピ 同じnamespace内のタスクなら、タスク名を書けばそれがそのまま呼べるtask :foo do; bar; end別のnamespaceなら<namespace>.<task>という感じで、ドットで繋げればOK...
View Articlecapistrano-rbenvを使ってみてのメモ
capistrano-rbenvを使うとcapistranoでrbenvを扱うことができる。3系には今のところ対応していない(capistranoの3系ってどこに出てるんだろう?)。Vagrant/Ched-soloで環境を作っていて2点ほどメモ。multistage環境でcapistrano-rbenvを使うときにrbenv_pathの扱いに注意しなくてもよくなってたcapistrano-rben...
View Articlecapistrano_database_ymlでデプロイ時にdatabase.ymlを生成する
capistrano_database_ymlを使うと、デプロイ時にテンプレートからdatabase.ymlを生成することができる。このときcapistrano側からパラメータを与えられるので、multistageと組み合わせると「本番サーバとステージングサーバで同じproduction環境を使いながらDBの接続先が異なる」ということができる。*1.gitignore:config/database...
View Articlecapistranoでassetsに更新がない場合にprecompileを行わない
サーバ間に差異があると意図どおりに動かない可能性があるのでおすすめできない(追記2参照)capistranoのでデプロイをするとdeploy:assets:precompileを走らせてassetsのコンパイルをしてくれるけど、毎回assetsに変更があるわけではない。なので変更がない場合にはprecompileを行わないように手を加える。config/deploy/assets.rb:namesp...
View ArticleCapistranoでunicornを扱うときはBUNDLE_GEMFILEをリセットする
Capistranoでunicornを使ったアプリをデプロイしているとBundler::GemfileNotFoundという例外があがることがあるらしい*1どうやらBUNDLE_GEMFILEがreleasesのある時点でのGemfileのパスを保持したままデプロイを重ねて、そのファイルがtruncateで削除されてたのが原因とのこと。自分のところではまだ再現していないけど、次のコードをunicor...
View ArticleCapistrano2でsharedにシンボリックリンクするディレクトリを追加する
Capistranoではリリース間でファイルを共有するためにいくつかのディレクトリがshared/以下にコピーされ、そちらにシンボリックリンクをはるようになっている。たとえばpublic/assetsとかlogとか。この仕組は任意のディレクトリに対しても使うことができる。# config/deploy.rb set :shared_children, shared_children +...
View Articledelayed_job + Rails4 + Capistrano + rbenv
Rails 4(ActiveRecord)でdelayed_jobを使いつつ、それをCapistranoでデプロイする方法のメモ。基本的に本家のWikiに従う。キューの機能を使うまず必要なgemをインストールしてマイグレーションファイルと実行ファイルを作成する。# Gemfile gem "delayed_job" gem "delayed_job_active_record" gem...
View ArticleCapistranoでデプロイ対象のEC2インスタンスをタグで指定するものを書いている
capistrano-ec2_taggedというgemを作った。まだrubygems.orgには上げていない。これはCapistranoで指定タグのEC2インスタンスにデプロイのようなことをやるためのもので、次のようにして使う:# Gemfile gem "capistrano-ec2_tagged", require: false, github:...
View Articlecapistrano-ec2_taggedというgemのv0.1.0をリリースした
以前Capistranoでデプロイ対象のEC2インスタンスをタグで指定するものを書いているという記事で紹介した、capistrano-ec2_taggedというgemをリリースした。capistrano-ec2_tagged (0.1.0): http://t.co/Bn9FSwBrgb Get ip addresses of AWS EC2 instances filtered by their...
View Articlecapistrano-bundlerでデプロイしたときにbinstubがどうこうという警告が出る件の対応
bundlerでbinstubしたrailsコマンドやrakeコマンドを使っていると、次のような警告がbin/rails cしたときなどに表示される:Looks like your app's ./bin/rails is a stub that was generated by Bundler. In Rails 4, your app's bin/ directory contains...
View ArticleCapistrano3のタスクの中からエラーを投げる
capistrano-pending gemでREVISIONファイルが無いときにエラーで終わらせたくてCapistranoのコードを読んでみたら、次のようにしてた:if test "[ -f #{current_path}/REVISION ]"# ファイルが存在した場合の処理else error "REVISION file doesn't exist"exit1endAbort when...
View ArticleCapistranoで今処理しようとしているhostの属するroleを判定する
host.rolesを叩くと、role(のSymbol)のSetが返ってくる。task :foo do on release_roles :all do |host| host.roles #=> #<Set: {:web, :app, :db}> end endgit_strategyの中でもcontextを通して同じことができる。set :git_strategy,...
View Articlecapistrano-rubotyというgemを書いた
capistranoでrubotyをデプロイするのをよしなに助けてくれるgemを書いた。github.comデーモン化とPIDファイルの書き出しに対応したruboty v1.3.0が必要になるので要注意。
View Articlecapistrano-pending v0.2.0をリリースした
https://rubygems.org/gems/capistrano-pending/versions/0.2.0Capistranoのプラグイン方式がv3.7から大きく変わって:scm変数が非推奨になり、さらにv4.0からは消されるらしく、その対応のため。といってもいただいたPRの挙動を確認しただけだけど。github.com仕組みが変わるのはメンテする側からすると厄介だけど、見た感じフックす...
View Article