2009年05月28日

Railsのdevelopment環境でYAML.loadを使った場合にloadに失敗する事がある

今日はプログラミング技術の話題。
(興味が無い人には意味のわからない内容となっています。)


『すうじあむ』のある特定の非常に重たい検索処理で、
頻繁な検索実行を抑える為に検索結果をファイルとして保存し
キャッシュしておくような処理がある。

ファイルの保存にはRubyのYAMLモジュールを使って、
ActiveRecordオブジェクトリスト(検索結果リスト)を
yaml形式に変換して保存している。

コードに直すとこう。

list = ActiveRecord.find(:all, 〜検索処理〜)
path = "保存するファイル名"
File.open(path,'w') {|f| f.puts list.to_yaml }

これでActiveRecordオブジェクトの情報も保持して保存してくれるので、
復元が非常に楽チンだ。
ところがこのファイルを読み込んでリストに戻す時に注意が必要。
Railsをdevelopment環境で実行時にのみ元のオブジェクトに戻らず、
YAMLオブジェクトのリストとなってしまう。

どうやらdevelopment環境では毎回クラスをロードしているので、
YAML.loadを実行する時に対象のActiveRecordクラスが見えていないよう。
loadを行う前にそのクラスをロードする処理を入れてやれば、
問題なく復元されるようになった。

loadはYAML.loadの手前にクラスをこんな感じに書いてやるだけで良い。

Examination # ExaminationというActiveRecordクラスに復元したい
path = "保存するファイル名"
list = YAML.load(File.read path)

test,production環境では起動時にだけクラスをロードするので、
サーバ起動中に一回でもロード済みなら問題ないようだ。



※『すうじあむ』はRuby On Railsを利用しています。

※Railsのバージョンは2.0.2でRubyのバージョンは1.8.6を使用。



posted by すうじあむ開発者 at 20:48| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2009年01月07日

新年のご挨拶

明けましておめでとうございます。

尾花です。
『すうじあむ』がオープンしてから初めてのお正月を迎えました。
昨年のオープン以来、いろいろな方から励ましの言葉や改善提案などをいただきました。
深く感謝いたします。

いただいた要望などは、慎重に検討を重ねた上でこれから順次対応いたしますので、
今しばらくお待ちください。
全ての声にお応えすることはできないのが心苦しいところでありますが、一つ一つの
提案に対し、全て社内で議論した上で利用者の皆様全体にとっての利便性を優先
しているつもりです。

今月は新規機能追加の予定もあり、現在スタッフ一同忙しいながらも懸命に取り組んでおります。
そんな私達にとって、皆様が『すうじあむ』を利用してくれること、色々な感想やフィードバックを
いただけることが最大の励みになります。

どうぞ、今年も『すうじあむ』をよろしくお願いいたします。
posted by すうじあむ開発者 at 11:39| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。