2007年03月19日(月) [長年日記]
- 全然書くことがない。今日の予定を書く。
- パスの所の処理を見直して、テストを書く。
- 検索結果画面に手を付けて、検出の機能を作り始める。
- テストを書くのはできた。でもテストケースが全然足りない。検出の機能には手が回らず。でもこれは後回しでよいことになった。
- vimのマウス機能が便利すぎる件を試してみた。すごいんだけど、今までとクリック時の挙動が変わるので使いにくいさが勝る。慣れれば平気かなあ。
■ [howto][unix] grep -r で対象ファイルを絞り込む
grep -r は簡単でよいけど対象ファイルを絞り込めないので不便、と思っていたが、ときどきの雑記帖 リターンズによると絞り込めるみたい。
試してみた。
$ grep -r adapter * config/.svn/text-base/database.yml.svn-base: adapter: sqlite3 config/.svn/text-base/database.yml.svn-base: adapter: sqlite3 config/.svn/text-base/database.yml.svn-base: adapter: sqlite3 config/database.yml: adapter: sqlite3 config/database.yml: adapter: sqlite3 config/database.yml: adapter: sqlite3 $ grep -r --include='*.yml' adapter * config/database.yml: adapter: sqlite3 config/database.yml: adapter: sqlite3 config/database.yml: adapter: sqlite3
ちょっと長くなるけどfindを使うよりは短い。
参考:grepのmanより:
-R, -r, --recursive Read all files under each directory, recursively; this is equivalent to the -d recurse option. --include=PATTERN Recurse in directories only searching file matching PATTERN. --exclude=PATTERN Recurse in directories skip file matching PATTERN.
■ [ruby] 今日学んだこと
private_class_method
クラスメソッドをプライベートにするときはprivate_class_methodを使う。
- 参考: 5.7 メソッドの可視性を指定したいのですが (Ruby FAQ)
これには private のように以下に書いたもの全てをプライベートにする機能はないみたい。
定数
定数が指しているオブジェクトは変更可能。
- 参考: 2.13 定数は変更されませんか (Ruby FAQ)
一時ディレクトリ、一時ファイル
システムの一時ファイルディレクトリは Dir.tmpdir で取得できる。一時ファイルは Tempfile クラスで作れるようだが一時ディレクトリを作ってくれる標準ライブラリはなさそう。
レシピブックにはDir.tmpdirの返す値が環境変数により変わるように書かれているが、そのような挙動は確認できなかった(ruby 1.8.5 (2006-12-04 patchlevel 2) )。
特異メソッド
特異メソッドを使ってみた。
my_string = String.new def my_string.mmmmm '特異メソッド' end puts my_string.mmmmm #=> 特異メソッド
こんな感じで、オブジェクトmy_stringに対してメソッドを定義できるようだ。
RAILS_GEM_VERSION
environment.rb で定義されている定数 RAILS_GEM_VERSION により、使用するRailsのバージョンが固定されるみたい。この定数を定義しなければ最新のRailsを使ってくれる模様。
■ [ruby] Refeの文字化け
Refeを使ってみたが文字化けしてしまう。とりあえず適当日記にあったのと同じ修正をした。うーむ。
--- searcher.rb 2003-10-17 21:44:12.000000000 +0900 +++ /usr/lib/ruby/gems/1.8/gems/refe-0.8.0.3/lib/refe/searcher.rb 2007-03-19 15:00:23.000000000 +0900 @@ -9,7 +9,7 @@ # require 'nkf' - +require 'iconv' module ReFe @@ -19,7 +19,8 @@ if shift_jis_platform? NKF.nkf('-Es', str) else - str + #str + Iconv.iconv("UTF-8","EUC-JP", str) end end
■ やること
- 年金