2013年1月22日火曜日

プリコミットフックの設定方法

Subversionにて、Rubyのプリコミットフックを作成します。

pre_commit.rb ファイルの作成
例えば、testリポジトリ
$ cd /opt/svn/test/hooks

$ vi pre_commit.rb
 ごにょごにょ記載

適宜権限設定
どう階層にある他のファイルに合わせれば大丈夫。
$ sudo chown www-data:www-data pre_commit.rb
$ sudo chmod 777 pre_commit.rb
pre-commit.tmplからpre-commitの作成
$ cp pre-commit.tmpl pre-commit
$ sudo chown www-data:www-data pre-commit
$ sudo chmod 777 pre-commit
$ vi pre-commit
==
## 日本語を読み込む必要がある場合はこれが必要!
export LANG=ja_JP.UTF-8

REPOS="$1"
TXN="$2"

${REPOS}/hooks/pre_commit.rb "$REPOS" "$TXN"
==
apache再起動

2013年1月11日金曜日

Rails3 ロケールファイルの引数と呼出し方

引数の記述方法と呼出し方法を忘れやすいのでメモ。

ja.yml
label_request: "要望"
label_test: "テストは %{count} 件です"
label_test2: "予定 %{field} 完了数"

xxx.html.erb
# @count = 5 の場合
<%= t('label_test', :count=>@count)%>
<%= t('label_test2', :field=>t('request'))%>

上記のように、引数に別のラベルを入れることも可能。

2013年1月8日火曜日

RubyからSMTPメールを送る方法

ActionMailerもありますが、
とりあえずスクリプトを実行してエラーが出たらメール通知したいので
簡単にできるSMTPメールにしました。

rescueのところで、下記を実装するとエラーが発生したらメール通知してくれます。
rescue => e
 msg = e.backtrace

な感じで書いて、下記の本文にあたるところに #{msg} を書けば、
バックトレースとともに送信される

===
require 'net/smtp'

#SMTP.start でセッションを開く
#第一引数がサーバのアドレスで第二引数がポート番号
#ブロックを使うとセッションの終了を自動的にやってくれる。
Net::SMTP.start( 'your.smtp.server', 25 ) {|smtp|
  #send_mail(テンプレート, 送信元, 送信先)
    smtp.send_mail <<EndOfMail, 'your@mail.address', 'to@some.domain'
From: Your Name <your@mail.address>
To: Dest Address <to@some.domain>
Subject: xxx script error

#{msg}
EndOfMail
}

【参考】
http://d.hatena.ne.jp/gakeno_ueno_horyo/20100917/1284705203