本番のRailsで実行されたSQLのログを出す方法

データの問題なんかで本番でしか再現しないなんてことが結構あのに、本番環境ではSQLがログに出力されないので確認が面倒だなという時に利用してます。

環境

特にバージョンは今のところ関係なさそうですが、利用したことのある環境は以下になります。

  • Ruby 1.8.7
  • Ruby On Rails 2.3.5

実装内容

config/enviroments/production.rbに以下の処理を追記して再起動で大丈夫です。

config/enviroments/production.rb
1
2
ActiveRecord::Base.logger = Logger.new("log/sql_#{Date.today}.log")
ActiveRecord::Base.logger.level = 0

logディレクトリ以下にsql_2012-06-08.logというファイルが作成されます。

結構な量になるのでどうしても本番環境でデバッグしなきゃいけない時だけに限定したほうがよさげです。

以上です。

ChangeLogを使ってみたらエラーがでた

普段使うこともなかったChangeLogなんですが、ちょっとしたスクリプトを書く機会があったので更新履歴に使ってみました。

更新履歴やらメモやらTODOやらを簡単に書ける機能がvimにはあるみたいです。

結構便利。

環境

  • OS: Mac OSX Lion
  • Vim: Macvim 7.3

ChangeLogファイルを用意する

vimにはchangelog.vimというのがあらかじめ組み込まれてるみたいなので、ファイルさえ作ってあげれば特に何もしないで利用できるとのこと。

ChangeLogとして認識されるファイル名はこんな感じ。

  • ChangeLog
  • Changelog
  • changeLog
  • changelog

もう少し細かいネーミングルールがあるみたいですが、個人的にはそんなにガッツリ使う機能でもないのでこれくらいあれば十分です。

ひとまずChangeLogというファイル名で作ります。

Terminal
1
$ vim ChangeLog

対応したファイルを開いたらChangeLogの項目を自動で追加してくれる¥oのキーを叩きます。

ちなみにMacもLinuxも共通です。

本来なら¥oとした時点で、ChangeLogの項目が自動で追加になるはずですが、以下のエラーが表示されてしまいました。

ChangeLog
1
2
3
4
5
6
7
8
9
10
function <SNR>77_new_changelog_entry の処理中にエラーが検出されました:
7:
E121: 未定義の変数です: g:changelog_username
E116: 関数の無効な引数です: s:substitute_items(g:changelog_date_entry_search, date, g:changelog_username)
E15: 無効な式です: s:substitute_items(g:changelog_date_entry_search, date, g:changelog_username)
9:
E121: 未定義の変数です: search
E116: 関数の無効な引数です: search(search) > 0
E15: 無効な式です: search(search) > 0
続けるにはENTERを押すかコマンドを入力してください

未定義の変数です: g:changelog_usernameエラーの対応

g:changelog_usernameが未定義の模様とのことなので、.vimrcに以下の設定を追記します。

.vimrc
1
2
3
4
5
"---------------------------------------------------------------------
" ChangeLogの設定
"---------------------------------------------------------------------
let g:changelog_username="nanigashi <nanigahi@xxxxxxx.xx>"
let g:changelog_dateformat="%Y-%m-%d (%a)"

これで¥oを叩くとこのように自動で項目が入ります。

細かいルールとかあまりなさそうなので、箇条書きで簡潔に書くようにしていこうかと思います。

以上です。

gnoteのメモをDropboxで共有する方法

複数のLinuxマシンでDropboxを利用してgnoteのデータを共有する方法です。  
応用すればいろんなアプリのデータを共有できると思います。
データをマージする方法はわからないので気をつけてください。

ローカルのgnoteデータをDropboxに移す

今利用しているgnoteのデータをDropboxに移します。

1
$ mv ~/.local/share/gnote ~/Dropbox/private/gnote

データディレクトリをシンボリックリンクで追加する。

gnoteを利用するマシンのデータを一旦削除する。

1
$ rm -rf ~/.local/share/gnote

Dropboxに移動したディレクトリをローカルのデータとしてシンボリックリンクを貼る。
gnoteを利用するマシンのデータを一旦削除する。

1
$ ln -s ~/Dropbox/private/gnote ~/.local/share/gnote

このように共有したいマシン全てにシンボリックリンクを貼れば、自動でDropboxがデータ更新してくれます。

以上です。

© 2019 磁力式駆動 All Rights Reserved.
Theme by hiero