SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Ruby on Rails + Curl(AD)

Curl+JRuby+Google App EngineでTwitter風アプリを作る
~GAE編~

最終回

  • このエントリーをはてなブックマークに追加

 前回作成したローカル環境のJRuby on RailsをGAE上に持っていきます。クラウド上に作成したアプリとCurlクライアントをつなぐことで、Ruby on Rails + Curlを実現します。

  • このエントリーをはてなブックマークに追加

はじめに

 今回は、前回作ったTwitter風アプリをGoogle App Engineで動くように改造していきます。

 Google App Engineは単なるサーバ環境の提供ではなくデータ管理等も含む独自環境です。そのため、Ruby on Railsのアプリケーションを動かす上で大きな問題点になってくるのは、データ管理機構がRDBではないことです。

 GAEのデータ管理機構「Datasotre(BigTable)」は基本的には Key-Value ストアです。一応、RDBのようにテーブルや行列という概念を持っており、RDB同様に行単位でデータの読み書きを行え、上位ライブラリではSQL風言語もサポートしています。しかし、基本はKey-Value ストアであり検索で指定できる条件は限られています。リレーション(join)等もありません。

 Ruby on Railsの高生産性を支えている大きな要素は、RDBを簡単に扱えるO/RマッパーActiveRecordと、それに連携したテンプレートActionViewやコントローラーActionControllerのコンビネーションです。しかし、ActiveRecordは完全にRDBに依存した設計のため、Datasotreを扱う事はできません。従って現時点では、GAE上で動くRuby on Railsアプリを作るのは簡単ではありません。

 そういった点の回避策も含めて、GAE上でRailsアプリを動かし、Curlクライアントと連携していく手順を見ていきましょう。

GAE環境のインストール

 今回使うrails_on_gaeですが、筆者のWindows環境では正しく動作しませんでした。今回はMac OS XやLinux等のUNIX系OSを使う前提で、環境構築などを説明していきます。

Google App Engine SDK for Javaのインストール

 Downloads - Google App Engine - Google CodeからGoogle App Engine SDK for Java(2009年9月30日時点は appengine-java-sdk-1.2.5.zip )をダウンロードし、適当な場所(例えば /usr/local/appengine-java-sdk-1.2.5 )に展開します。また、展開した中の binディレクトリをPATHに追加します。

WAR作成ツールのインストール

 gemでインストールします。

% sudo  jruby -S gem install warbler  --no-ri --no-rdoc

GAE/J用のRailsアプリを作る

 GAE/J上で動かすには、Ruby on Rails自体やGAEのAPIをアクセスするためのライブラリが必要になります。これらの設定を行ってくれるrails_on_gae プラグインが、technohippy さんによりtechnohippy's rails_on_gae at master - GitHubにて公開されてます。これを使うと簡単にGAEで動くJRuby on Rails環境が簡単につくれます。

 ここでは jtinytterとういプロジェクトを作成します(この作業は時間がかかる場合があります)。

% jruby -S rails jtinytter
% cd jtinytter
% jruby -S script/plugin install git://github.com/technohippy/rails_on_gae.git
% jruby -S rake gae:init
% cp /usr/local/appengine-java-sdk-1.2.5/lib/user/appengine-api-1.0-sdk-1.2.5.jar  lib

GAE向けにソースを書き換える

 最初に説明したようにGAEではActiveRecordが使えませんので、 GAEのDatastoreを扱えるモジュールを使ってモデルを書き換えます。今回はモデルのみの変更で済むように工夫しています。従って、コントローラー、テンプレート等は前回作ったものからコピーしてください。

 Datastoreの操作については、JRubyから直接DatastoreのJava APIを呼び出す事もできますが、今回は上記のインストールで入手できる「Bumble」というモジュールを使います。このモジュールはOla Biniさんの作ったモジュールで、Datastore の機能をRubyから簡単に使えるAPIと、Rails風の関連機能(has_many、belongs_to)を追加したシンプルなものです。ソースコードはここで見れます

 書き換えの内容については次ページ以降で解説していきます。

サンプルソースについて

 こちらよりサンプルソースをダウンロードできます。なお、サンプルソース実行にあたってはライセンスファイル「curl-license-5.dat」が必要になります。Curl IDEなどに含まれているので、コピーして使用してください。

前回サンプルソースのお詫びと訂正

 前回のサンプルソースですが、データベースの設定ファイルが間違っていました。お詫びして訂正します。

 JRubyで動かすにはconfig/database.yml ファイルには「jdbcsqlite3」を指定する必要がありました。config/database.ymlファイルの4行目を以下のように修正してください(※現在公開されているサンプルソースは修正済みです)。

#adapter: sqlite3
adapter: jdbcsqlite3

次のページ
GAE用の書き換え 1

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
Ruby on Rails + Curl連載記事一覧

もっと読む

この記事の著者

吉田裕美(ヨシダユウミ)

有限会社 EY-Office 取締役CADのベンチャー企業でCADのコア部分や図面管理システムなどの開発に従事した後、独立しJava,Ruby,PerlでWebアプリを中心に開発してきた。現在は殆どの開発はRuby on Rails。ここ数年はソフトウェアエンジニアの教育に興味をもち、従来の知識偏重な教育ではなく現実の問題を解決できるエンジニアを育てる教育に注力している。またLisp等に関心...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4434 2009/09/30 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング