#chiroito ’s blog

Java を中心とした趣味の技術について

JRuby on Railsシステム構築入門 3章 -GAE版-

 『JRuby on Railsシステム構築入門』の内容をGoogle App Engineで動作させてみたいと思います。本内容をblogに記載することの許可と協力をして頂きました著者である橋本 吉治 氏(@hasssie)に感謝致します。なお、具体的な説明は行いません。詳細は書籍を参照願います。
JRuby on Railsシステム構築入門 (DB Magazine SELECTION)
JRuby on Railsシステム構築入門 (DB Magazine SELECTION)

橋本 吉治

book_stock プロジェクトの作成

 こちらの記事(GAE+Ruby+Railsプロジェクト作成 on Windows -2.3.11版-)を参考にプロジェクトを作成し、NetBeansでbook_stockというプロジェクト名で読み込みます。
P.42 画面2:新規プロジェクト
P.42 画面3:プロジェクトの名前と場所

 GAE上にデプロイしてデバッグする場合はdatabase.ymlやenvironment.rbを変更する必要はありません。

書籍モデルの追加

Railsジェネレータでモデルを作成していきます。

ジェネレータ:scaffold
モデル名:Book
属性ペア:isbn:string title:string author:string release_on:date price:integer publisher_id:integer

ジェネレータ:dd_model
引数:Book isbn:string title:string author:string release_on:date price:integer publisher_id:integer
ファイルが既に存在する場合:上書き

 ここまででデプロイするとhttp://.appspot.com/booksでアクセスする事が出来ます。デプロイの方法の詳細はこちらGAE+Ruby+Railsプロジェクトのデプロイ

出版社モデルの追加

ジェネレータ:scaffold
モデル名:Publisher
属性ペア:name:string address:string url:string

ジェネレータ:dd_model
引数:Publisher name:string address:string url:string
ファイルが既に存在する場合:上書き

モデルについて

 ここで注意したいのは書籍に記載されているソースではbook.rbとpublisher.rbに各項目の定義は含まれていませんが、GAEではRDBが存在せず自由なデータ型を格納する事が出来るためモデル側に各項目の定義が必要になります。その定義をdd_modelで行っています。

例:publisher.rb
class Publisher
include DataMapper::Resource
storage_names[:default] = "Publisher"

property :id, Serial
property :name, String, :required => true, :length => 500
property :address, String, :required => true, :length => 500
property :url, String, :required => true, :length => 500
timestamps :at
end

参考

JRuby on Railsシステム構築入門 (DB Magazine SELECTION) 3章