[groonga-dev,02171] Re: rroonga4.0.0のrecord.key

Back to archive index

Kouhei Sutou kou****@clear*****
2014年 3月 6日 (木) 16:25:47 JST


須藤です。

In <df3c5906-a457-3d3f-8f9a-c02e5c273b65 @ api104>
  "[groonga-dev,02170] rroonga4.0.0のrecord.key" on Thu, 06 Mar 2014 16:03:30 +0900,
  "Endo Akira" <endo4****@goo*****> wrote:

> 昨日rroongaを使っている検索サーバーがクラッシュした、との連絡を受け、
> 今日復旧に行ってきました。rroonga1.2.0を使って作ったrailsアプリですが、
> gemを探しても1.2.0は見つからず、4.0.0をいれて走らせましたがエラーが
> 出てしまいます。エラーは、undefined method 'key' for nil:Nilclassという
> 感じのもの。record.key.keyという熟語を使った部分です。
> とりあえず、record.attributesを見て、record._keyで何が出てくるか見たら
> 使えそうだったので、record.key.keyの代わりにrecord._keyと直して、今日の
> ところはごまかしてきましたが、帰宅してtutorialを見たら、record["_key"]と
> いうのが出ていました。

たぶん、sortした結果にアクセスしているところですよね。
Rroonga 2.1.0での非互換な変更なんですが、sortした結果をRuby
のArrayではなくGroongaのGroonga::Arrayで返すようにしたのです。

record._keyとrecord["_key"]の違いですが、どちらも動きは同じ
ですが、record["_key"]の方が少し効率がよいはずです。

"key"ではなく、"_key"というように最初に"_"をつけると参照先の
テーブルを勝手にどんどん辿っていってくれるのはRroonga固有の
機能ではなく、Groongaの機能です。Groongaのselectコマンドでも
--output_columns _keyとしたときもどんどん辿っていっています。

で、特に途中のテーブルに処理結果に興味がない場合は.key.keyと
いうように辿らないで_keyに任せちゃうのは正しい使い方です!


1.2.0は2011-04-01リリースなので、3年くらい前のリリースですね。
当時から元気に動いていたようでよかったです。今回はクラッシュ
してしまったということですが。。。


-- 
須藤 功平 <kou****@clear*****>
株式会社クリアコード <http://www.clear-code.com/> (03-6231-7270)

Groongaサポート:
  http://groonga.org/ja/support/
パッチ採用はじめました:
  http://www.clear-code.com/recruitment/
コミットへのコメントサービスはじめました:
  http://www.clear-code.com/services/commit-comment.html




groonga-dev メーリングリストの案内
Back to archive index