2009年12月08日

AppEngine/JRuby で Datastore に大量の文字を入れる場合

要素数が数千あるような Hash を YAML で文字列化して Datastore に突っ込もうとしたら文字数が多すぎるというエラーになってしまった。どうも普通の文字だと 500 文字程度までしか格納できないらしい。

Textという型にすれば大丈夫らしいのだが、Entityに値を突っ込む時には型なんか指定していないので、指定方法が分からない・・・。APIドキュメントを見ると AppEngine::Datastore::Text という型があった。クラスメソッドの new_from_java(text) と、インスタンスメソッドの to_java() だけが定義されている。しかし、試してみるとどちらもエラーになってしまう・・・。

いろいろ試してみたところ、実は普通に new するだけで大丈夫だった。
require 'appengine-apis/datastore_types'

(中略)
e['myhash'] = AppEngine::Datastore::Text.new(str.to_yaml)


maru_tak at 23:35│Comments(0)TrackBack(0)

トラックバックURL

コメントする

名前
URL
 
  絵文字