プラグイン(plugin)

コマンドの実行を自動化(capistrano)

説明

コマンドの実行を自動化

前提条件

  • アプリケーションがバージョン管理ツールで管理されている
  • デプロイ先のサーバにSSHでログインできる
  • デプロイ先サーバのログインユーザが、インストールディレクトリを読み書きできる権限がある
  • デプロイ先サーバにバージョン管理クライアントがインストールされている

簡単な流れ

  1. 開発環境にRailsアプリを作成
  2. Railsアプリをcapistranoに対応
  3. config/deploy.rbを編集
  4. rake deploy

インストール

$ gem install capistrano

設定ファイルを生成

$ capify アプリケーションのルートディレクトリ

$ cd path/to/application
$ capify .
[add] writing '.Capfile'
[add] writing './config/deploy.rb'
[done] capified!

デプロイの設定

基本的な設定
設定項目説明
:applicationアプリケーション名を設定
:repositoryアプリケーションを管理している構成管理ツールのレポジトリを設定
:deploy_toアプリケーションのデプロイ先のパスを指定
:use_sudo各種操作でsudoするかどうかを指定
:runnerサーバ上でsudoして各種操作を実行するユーザ名を指定
:scm構成管理ツールを指定
:deploy_viaデプロイ方法を指定
:revisionデプロイするリビジョンを指定

配布先のサーバにディレクトリツリーを作成

  • アクセス件の変更
$ sudo visudo
#Defaulrs requiretty <- コメントアウト
  • ディレクトリ作成
$ cap deploy:setup

デプロイを実行

$ cap deploy

本番用のDBを作成

$ cap deploy:migrate

プロセスを起動

$ cap script:start

ロールバック

$ cap deploy:rollback

コミットするときに無視

  • database.yml
  • schema.rb
  • log
  • tmp

グラフを表示(Gruff)

インストール

$ gem install gruff

グラフの種類を決める

@graph = Gruff::Pie.new

グラフのテーマやタイトル、フォントを指定

@graph.font = "/usr/share/fonts/ipag.ttf"
@graph.title "#{Time.now}時点でのアクセス状況"

グラフのデータを追加

@graph.data("おもしろい", [Vote.count(:conditions => ["good = ?", true ])])
@graph.data("つまんない", [Vote.count(:conditions => ["good = ?", false ])])

グラフをファイル、またはバイナリ文字に出力

@graph.write("votes.png")

Railsに組み込む

ビュー
<%= tag("img", :src => url_for(:controller=>"votes", :action=>"graph")) %>
コントローラ
def graph
  graph = Gruff::Pie.new
  graph.font = "/path/to/fonts/ipag.ttf"
  graph.title = "投票状況"
  graph.data("おもしろい", [Vote.count(:conditions => ["good = ?", true ])])
  @graph.data("つまんない", [Vote.count(:conditions => ["good = ?", false ])])
  end_data(graph.to_blob, :type => "image/png", :disposition=>"inline")
end