LoginSignup
6
6

More than 5 years have passed since last update.

CapistranoをNanocで使う

Last updated at Posted at 2013-06-18

Capistrano はとっても便利で、Railsを使ったら間違いなく反映はこれ!
ってぐらいよく出来てるツールなんですがコイツをNanocなプロジェクトで使う編です。

Nanoc はRubyで出来てる静的ページのCMSなんですが、

  • HTMLをHamlで書きたい
  • CSSをSassで書きたい
  • Compassを使いたい
  • JSをCoffeeScriptで書きたい

なんかの時にはとてもとても重宝しているツールです。
ちょっとこんなJS試したいなーの時とか簡単なサイト作るのに使ってます。
だって、HTMLとか書くの面倒じゃないですか!

開発時にはHamlとかでゴリゴリ書いていくんですが、
コイツをサーバーに乗せる時にはHTMLにしなきゃなりません。
そのため、一度「コンパイル」することが必要です。

ちなみにNanoc自体にもDeploy機能はありますが、ちょっと手の込んだことをしたいケース等を想定しています。単純なrsyncだけならNanocだけで十分ですね。

Capfileの修正

Non-RailsなプロジェクトにCapistranoを利用すると、finalize_update あたりでコケます。

No such file or directory

public/imagesなんてねーよ!と怒られる。そりゃそうです。
もともとCapistranoはRailsを想定していますからね。

そもそも、Non-Railsであるプロジェクトであれば不要なタスクが多いので、そいつらは始めに殺してしまう感じです。
migratefinalize_updatestartstoprestart なんかは要らないですね。

# config/deploy.rb
namespace :deploy do
  task :migrate do
    puts "    not doing migrate because not a Rails application."
  end
  task :finalize_update do
    puts "    not doing finalize_update because not a Rails application."
  end
  task :start do
    puts "    not doing start because not a Rails application."
  end
  task :stop do
    puts "    not doing stop because not a Rails application."
  end
  task :restart do
    puts "    not doing restart because not a Rails application."
  end
end

Nanocを自動でコンパイルさせる

Capistranoのソースをgitリポジトリにしているなんかだと、
当然コンパイルされないままプロジェクトが一式送信されてしまうので
私の場合はリモートでコンパイルするようにしてます。

Bundlerを利用していますので、

# Capfile
require 'bundler/capistrano'

をCapfileに追記した後、タスクを

# config/deploy.rb
namespace :deploy do
  # code
  after "deploy:update_code", "compile_nanoc"
end

task :compile_nanoc do
  puts "    Compiling nanoc..."
  run "cd #{release_path} && bundle exec nanoc compile"
end

こんな感じで書いてやるとリモートサーバーで bundle install が行われた後、
コンパイルが掛かります。失敗するともちろんデプロイは中断、 rollback してくれますよ。

6
6
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
6
6