<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Born Too Late &#187; Google App Engine</title>
	<atom:link href="http://blog.yuyat.jp/archives/category/tech/google-app-engine/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.yuyat.jp</link>
	<description>Yuya&#039;s tech blog.</description>
	<lastBuildDate>Sat, 04 Feb 2012 11:25:32 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>GAE で Rails 2.3.8 が動くようになっていた</title>
		<link>http://blog.yuyat.jp/archives/411</link>
		<comments>http://blog.yuyat.jp/archives/411#comments</comments>
		<pubDate>Sun, 25 Jul 2010 23:11:37 +0000</pubDate>
		<dc:creator>yuya</dc:creator>
				<category><![CDATA[Google App Engine]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[GAE]]></category>
		<category><![CDATA[Rails]]></category>

		<guid isPermaLink="false">http://blog.yuyat.jp/?p=411</guid>
		<description><![CDATA[昨日の記事『Ubuntu 10.04 で JRuby on Rails on GAE を始めるまでの作業ログ』では、Rails 2.3.5 で GAE プロジェクトを作りましたが、Rails 2.3.8 でも作れるように [...]]]></description>
			<content:encoded><![CDATA[<p>昨日の記事<a href="http://blog.yuyat.jp/archives/395">『Ubuntu 10.04 で JRuby on Rails on GAE を始めるまでの作業ログ』</a>では、Rails 2.3.5 で GAE プロジェクトを作りましたが、Rails 2.3.8 でも作れるようになっていました !</p>
<ul>
<li><a href="http://gist.github.com/486250">Rails 2.3.8 on App Engine (DataMapper)</a></li>
</ul>
<p>で、書かれていた通りやってみたところ、あっさり動きました。</p>
<p>作業上の変更点は以下のような感じだとおもいます。</p>
<ul>
<li>Gemfile を手書きで書き足さなくてよくなった</li>
<li>ails238_appengine.rb に tiny_ds オプションはあるものの、動かない ?</li>
</ul>
<p>というわけで、昨日書いた記事は、書いた時点で既に陳腐化してということですね &#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.yuyat.jp/archives/411/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ubuntu 10.04 で JRuby on Rails on GAE を始めるまでの作業ログ</title>
		<link>http://blog.yuyat.jp/archives/395</link>
		<comments>http://blog.yuyat.jp/archives/395#comments</comments>
		<pubDate>Sun, 25 Jul 2010 06:14:32 +0000</pubDate>
		<dc:creator>yuya</dc:creator>
				<category><![CDATA[Google App Engine]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[GAE]]></category>
		<category><![CDATA[Rails]]></category>

		<guid isPermaLink="false">http://blog.yuyat.jp/?p=395</guid>
		<description><![CDATA[注意 この記事は既に情報が古くなっています。 2010 年 7 月 26 日現在での最新の情報は以下を参照してください。 GAE で Rails 2.3.8 が動くようになっていた この記事では、GAE (Google  [...]]]></description>
			<content:encoded><![CDATA[<p><strong>注意</strong></p>
<p>この記事は既に情報が古くなっています。<br />
2010 年 7 月 26 日現在での最新の情報は以下を参照してください。</p>
<ul>
<li><a href="http://blog.yuyat.jp/archives/411">GAE で Rails 2.3.8 が動くようになっていた</a></li>
</ul>
<p>この記事では、GAE (Google App Engine) 上で Ruby on Rails を動かすまでに必要な作業を紹介します。</p>
<p>既に GAE を利用している人であればご存知かと思いますが、GAE では Java か Python しか動かすことができないので、通常は Ruby を動かすことはできません。しかし、Java が動くということは、<a href="http://jruby.org/">JRuby</a> は動くので、その中で Rails を動かしてみよう、というものです。</p>
<p>この記事は、ほとんどが <a href="http://twitter.com/urekat">@urekat</a> さんによる<a href="http://d.hatena.ne.jp/urekat/20100220/1266691037">記事</a>のトレースです。ただし、現在は、@urekat さんの記事そのままでは動かない部分もあるので、そこも吸収しながら紹介していきます。</p>
<p>@urekat さんの記事が書かれたのが 2010 年 2 月 20 日で、半年も経たずにインストール作業が変わってしまっているので、この記事も数ヶ月後には役に立たなくなっているかもしれません。<strong>以下はすべて、2010 年 7 月 25 日現在の情報である</strong>、ということにご注意ください。</p>
<p>今回は、Ruby のインストールから始めます。</p>
<p><strong>Ruby, Rubygems, Java のインストール</strong></p>
<p>Ruby は MRI (Matz&#8217; Ruby Implementation) の 1.8.7 を用います。ここでは JRuby でないことにご注意ください。</p>
<p>Rubygems というのは、Ruby 用のパッケージ管理ソフトです。</p>
<p>Java は 1.6 を用います。</p>
<pre class="brush:bash">sudo apt-get install ruby rubygems openjdk-6-jdk</pre>
<p>正常にインストールされれば、以下の用にバージョンの確認ができるはずです。</p>
<pre class="brush:bash">$ ruby -v
ruby 1.8.7 (2010-01-10 patchlevel 249) [i486-linux]
$ gem -v
1.3.5
$ java -version
java version "1.6.0_18"
OpenJDK Runtime Environment (IcedTea6 1.8) (6b18-1.8-0ubuntu1)
OpenJDK Client VM (build 14.0-b16, mixed mode, sharing)</pre>
<p><strong>Rails のインストール</strong></p>
<p>先ほどインストールした Rubygems でインストールできます。</p>
<pre class="brush:bash">$ sudo gem install rails --version 2.3.5 --no-ri --no-rdoc
Successfully installed rake-0.8.7
Successfully installed activesupport-2.3.5
Successfully installed activerecord-2.3.5
Successfully installed rack-1.0.1
Successfully installed actionpack-2.3.5
Successfully installed actionmailer-2.3.5
Successfully installed activeresource-2.3.5
Successfully installed rails-2.3.5
8 gems installed</pre>
<p>現在、Rails は 2.3.8 が最新ですが、rails_appengine パッケージが 2.3.5 を必要賭しているようなので、2.3.5 を指定しています。</p>
<p>&#8211;no-ri &#8211;no-rdoc オプションは、ドキュメントのダウンロードをスキップするものです。ドキュメントが必要であれば、これらのオプションは外して構いません。</p>
<p><strong>google-appengine パッケージのインストール</strong></p>
<p>ここでは、先ほどインストールした Rubygems でインストールを行います。</p>
<pre class="brush:bash">$ sudo gem install google-appengine --no-ri --no-rdoc
Successfully installed jruby-jars-1.5.1
Successfully installed appengine-rack-0.0.11
Successfully installed appengine-apis-0.0.18
Successfully installed appengine-sdk-1.3.5
Successfully installed bundler08-0.8.5
Successfully installed rubyzip-0.9.4
Successfully installed appengine-tools-0.0.15
Successfully installed google-appengine-0.0.15
8 gems installed</pre>
<p>これだけで GAE 関連のライブラリ・ツールが一気にインストールされます。</p>
<p>しかし、通常このままでは appcfg.rb や dev_appserver.rb といったツールにパスが通っていないと思うので、Rubygems の bin ディレクトリにパスを通します。好みのエディタで ~/.bashrc ファイルを開き、一番下にでも以下のような記述を追加します。</p>
<pre class="brush:bash"># Rubygems
export PATH=$PATH:/var/lib/gems/1.8/bin</pre>
<p>続いて、~/.bashrc を再読み込みすれば反映されます。</p>
<pre class="brush:bash">source ~/.bashrc</pre>
<p>パスが通ったか、の確認は以下のように行うことができます。</p>
<pre class="brush:bash">$ which appcfg.rb dev_appserver.rb
/var/lib/gems/1.8/bin/appcfg.rb
/var/lib/gems/1.8/bin/dev_appserver.rb</pre>
<p>ここまでは @urekat さんの記事とほとんど変わりません。ここから先に、変更点を多く含みます。</p>
<p><strong>プロジェクトを作成する</strong></p>
<p>ここでいう「プロジェクト」とは「ひとかたまりの Rails アプリケーション」ぐらいの意味です。そのテンプレートにあたるファイル群を生成します。</p>
<p>プロジェクトはひとつのディレクトリ内で行うので、適当にディレクトリを作成し、その中に移動します。</p>
<pre class="brush:bash">$ mkdir test_app
$ cd test_app</pre>
<p>この中で、先ほどインストールし、パスを通した appcfg.rb コマンドを使います。最後の引数の . (ドット) に注意してください。</p>
<pre class="brush:bash">$ appcfg.rb generate_app .
=> Generating gemfile
=> Bundling gems
Calculating dependencies...
Updating source: http://gems.rubyforge.org
Downloading appengine-rack-0.0.11.pre.gem
Caching: jruby-jars-1.5.1.gem
Caching: jruby-rack-1.0.1.gem
Caching: rack-1.2.1.gem
Installing jruby-jars (1.5.1)
Installing rack (1.2.1)
Installing jruby-rack (1.0.1)
Installing appengine-rack (0.0.11.pre)
Done.
=> Packaging gems
=> Installing jruby-core-1.5.1.jar
=> Installing jruby-stdlib-1.5.1.jar
=> Installing jruby-rack-1.0.1.jar
=> Installing appengine-rack.jar
=> Generating rackup
=> Generating app.yaml</pre>
<p>これで、GAE 上で JRuby アプリケーションを動かすためのテンプレートが生成されました。</p>
<p>私自身は試していませんが、例えば <a href="http://www.sinatrarb.com/">Sinatra</a> を GAE 上で動かす、というときも、ここまでは同じ作業が必要になると思います。</p>
<p>次に、Rails のファイル群を生成します。途中「robots.txt を上書きしてもいいですか ?」と聞かれますが、Yes で問題ありません。</p>
<pre class="brush:bash">$ wget http://appengine-jruby.googlecode.com/hg/demos/rails2/rails2_appengine.rb
$ ruby rails2_appengine.rb
=> Bundling gems
Calculating dependencies...
Updating source: http://gems.rubyforge.org
Caching: actionmailer-2.3.5.gem
Caching: actionpack-2.3.5.gem
Caching: activerecord-2.3.5.gem
Caching: activeresource-2.3.5.gem
Caching: activesupport-2.3.5.gem
Downloading addressable-2.1.2.gem
Caching: appengine-apis-0.0.18.gem
Caching: appengine-rack-0.0.11.gem
Downloading dm-appengine-0.0.9.gem
Downloading dm-ar-finders-0.10.2.gem
Downloading dm-core-0.10.2.gem
Downloading dm-timestamps-0.10.2.gem
Downloading dm-validations-0.10.2.gem
Downloading extlib-0.9.15.gem
Caching: rack-1.0.1.gem
Caching: rails-2.3.5.gem
Downloading rails_appengine-0.0.4.gem
Downloading rails_dm_datastore-0.2.9.gem
Caching: rake-0.8.7.gem
Installing activesupport (2.3.5)
Installing extlib (0.9.15)
Installing rails_appengine (0.0.4)
Installing rack (1.0.1)
Installing actionpack (2.3.5)
Installing actionmailer (2.3.5)
Installing rake (0.8.7)
Installing addressable (2.1.2)
Installing dm-core (0.10.2)
Installing dm-timestamps (0.10.2)
Installing dm-validations (0.10.2)
Installing dm-appengine (0.0.9)
Installing appengine-rack (0.0.11)
Installing appengine-apis (0.0.18)
Installing dm-ar-finders (0.10.2)
Installing activerecord (2.3.5)
Installing rails_dm_datastore (0.2.9)
Installing activeresource (2.3.5)
Installing rails (2.3.5)
Deleting gem: rack (1.2.1)
Deleting gem: appengine-rack (0.0.11.pre)
Done.
=> Packaging gems
=> Installing appengine-api-labs-1.3.5.jar
=> Installing appengine-api-1.0-sdk-1.3.5.jar
=> Installing jruby-core-1.5.1.jar
=> Installing jruby-stdlib-1.5.1.jar
=> Installing jruby-rack-1.0.1.jar
=> Installing appengine-rack.jar
      exists
      create  app/controllers
      create  app/helpers
      create  app/models
      create  app/views/layouts
      create  config/environments
      create  config/initializers
      create  config/locales
      create  db
      create  doc
      create  lib
      create  lib/tasks
      create  log
      create  public/images
      create  public/javascripts
      create  public/stylesheets
      create  script/performance
      create  test/fixtures
      create  test/functional
      create  test/integration
      create  test/performance
      create  test/unit
      create  vendor
      create  vendor/plugins
      create  tmp/sessions
      create  tmp/sockets
      create  tmp/cache
      create  tmp/pids
      create  Rakefile
      create  README
      create  app/controllers/application_controller.rb
      create  app/helpers/application_helper.rb
      create  config/database.yml
      create  config/routes.rb
      create  config/locales/en.yml
      create  db/seeds.rb
      create  config/initializers/backtrace_silencers.rb
      create  config/initializers/inflections.rb
      create  config/initializers/mime_types.rb
      create  config/initializers/new_rails_defaults.rb
      create  config/initializers/session_store.rb
      create  config/environment.rb
      create  config/boot.rb
      create  config/environments/production.rb
      create  config/environments/development.rb
      create  config/environments/test.rb
      create  script/about
      create  script/console
      create  script/dbconsole
      create  script/destroy
      create  script/generate
      create  script/runner
      create  script/server
      create  script/plugin
      create  script/performance/benchmarker
      create  script/performance/profiler
      create  test/test_helper.rb
      create  test/performance/browsing_test.rb
      create  public/404.html
      create  public/422.html
      create  public/500.html
      create  public/index.html
   identical  public/favicon.ico
overwrite public/robots.txt? (enter "h" for help) [Ynaqdh] y
       force  public/robots.txt
      create  public/images/rails.png
      create  public/javascripts/prototype.js
      create  public/javascripts/effects.js
      create  public/javascripts/dragdrop.js
      create  public/javascripts/controls.js
      create  public/javascripts/application.js
      create  doc/README_FOR_APP
      create  log/server.log
      create  log/production.log
      create  log/development.log
      create  log/test.log
+ ./LICENSE
+ ./README
+ ./Rakefile
+ ./init.rb
+ ./lib/active_record/connection_adapters/nulldb_adapter.rb
+ ./lib/nulldb_rspec.rb
+ ./spec/nulldb_spec.rb
+ ./tasks/database.rake
##
## Now type './script/server.sh'
##</pre>
<p>最後に、Gemfile というファイルに以下の記述を追加します。</p>
<pre class="brush:ruby">gem 'appengine-rack', '0.0.10.pre'
gem 'jruby-openssl'
gem 'jruby-jars'</pre>
<p>appengine-rack パッケージは、現在 0.0.11 が最新のようですが、どうもそれだと動かないようなので、0.0.10.pre を指定しています。</p>
<p><strong>開発サーバーを起動する</strong></p>
<p>以上が問題なく完了すれば、開発サーバーを起動して、動作確認してみましょう。</p>
<pre class="brush:bash">$ dev_appserver.rb .
=> Bundling gems
Calculating dependencies...
Updating source: http://gems.rubyforge.org
Downloading appengine-rack-0.0.10.pre.gem
Downloading jruby-openssl-0.7.gem
Installing jruby-openssl (0.7)
Installing appengine-rack (0.0.10.pre)
Deleting gem: appengine-rack (0.0.11)
Done.
=> Packaging gems
=> Installing appengine-rack.jar
=> Installing appengine-api-labs-1.3.5.jar
=> Installing appengine-api-1.0-sdk-1.3.5.jar
=> Installing jopenssl.jar
=> Installing bcmail-jdk15-144.jar
=> Installing bcprov-jdk15-144.jar
=> Installing jruby-core-1.5.1.jar
=> Installing jruby-stdlib-1.5.1.jar
=> Installing jruby-rack-1.0.1.jar
=> Booting DevAppServer
=> Press Ctrl-C to shutdown server
# 中略
情報: The server is running at http://localhost:8080/</pre>
<p>初回は上記の用に、必要な Rubygems を jar ファイルとしてインストールする動作が伴うので時間がかかりますが、それ以降は普通にサーバーが起動するのみです。</p>
<p>http://localhost:8080/ にアクセスすれば、Rails のデフォルト画面が表示されているはずです。</p>
<p>「About your application’s environment」というテキストをクリックすると、以下のように表示されるはずです。</p>
<pre>Ruby version	1.8.7 (java)
RubyGems	disabled
Rack version	1.1
Rails version	2.3.5
Action Pack version	2.3.5
Active Support version	2.3.5
DataMapper version	0.10.2
Environment	development
JRuby Runtime version	1.5.1
JRuby-Rack version	1.0.1
AppEngine SDK version	1.3.5
AppEngine APIs version	0.0.18
Auth domain	gmail.com
Application id:version	new-app:1</pre>
<p>ここまでで、Ubuntu 10.04 のローカル環境において、GAE 開発サーバー上での JRuby on Rails の準備は終わりです。</p>
<p><strong>その後どうするか</strong></p>
<p>このあとは、自分なりのアプリケーションを開発したり、それを GAE 本番環境にデプロイしたりとしていくわけですが、それらについては @urekat さんの記事のままで問題ないようなので、ここでの説明は省きます。</p>
<p>これ以降については私自身も知らない部分が多いので、自分でアプリを作っていきながら、紹介していければと思います。</p>
<p>JRuby on Rails に興味を持った方は、<a href="http://groups.google.co.jp/group/jruby-users-jp">日本 JRuby ユーザ会</a>のイベントに参加してみましょう ! 次回 2010 年 8 月 6 日のイベントでは、@urekat さんの GAE についてのプレゼンも聞けます。</p>
<p><strong>関連ページ</strong></p>
<ul>
<li><a href="http://d.hatena.ne.jp/urekat/20100220/1266691037">[gae]GoogleAppEngine/JRuby+RailsでscaffoldからTwitterBotまで</a></li>
<li><a href="http://gist.github.com/269075">Rails 2.3.5 on App Engine (TinyDS)</a></li>
<li><a href="http://groups.google.co.jp/group/jruby-users-jp">日本 JRuby ユーザ会</a></li>
<li><a href="http://atnd.org/events/6595">日本JRubyユーザ会 第1回 : ATND</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.yuyat.jp/archives/395/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>xml.parsers.expat で XML 文書を解析する</title>
		<link>http://blog.yuyat.jp/archives/311</link>
		<comments>http://blog.yuyat.jp/archives/311#comments</comments>
		<pubDate>Sun, 02 May 2010 18:26:04 +0000</pubDate>
		<dc:creator>yuya</dc:creator>
				<category><![CDATA[Google App Engine]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[GAE]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://blog.yuyat.jp/?p=311</guid>
		<description><![CDATA[Google App Engine (以下 GAE) 上で Amazon の Product Advertising API を扱うべく、Python の XML ライブラリについて調べていました。どうも Pythoni [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Google App Engine</strong> (以下 GAE) 上で Amazon の Product Advertising API を扱うべく、Python の XML ライブラリについて調べていました。どうも Pythonista の間では <strong>lxml</strong> というのがメジャーらしいので、さっそく組み込んでみたのですが、どうも<strong>動かない</strong>。</p>
<p>調べて見たところ、GAE 上では、セキュリティの関係上、<strong>C 拡張による Python ライブラリは動かない</strong>とのことで、lxml は使えないようです。</p>
<p><strong>代替ライブラリを探す</strong></p>
<p>C 拡張がダメということは、つまり <strong>Pure Python</strong> なライブラリなら OK、という解釈でいいのでしょうか。探してみたところ、ちょうど先日購入した <strong><span class="isbn_anchor"><a href="http://www.amazon.co.jp/o/ASIN/4873112761/yuyat-22/">Python クックブック 第2版</a></span></strong> の p.479 に「<em>XML 文書を Python のオブジェクトツリーに変換</em>」というレシピが載っていました。</p>
<p><strong>写経、そして修正</strong></p>
<p>さっそく写経してみたのですが、<strong>動かない</strong>。しばらく調べた結果、誤植によるものと思われるバグを発見。その他いくつかの修正を加えたものを GitHub に公開しました。</p>
<p>主な変更点は以下の通りです。</p>
<ul>
<li>Xml2Obj.EndElement が上手く動かないのを修正</li>
<li>UTF-8 に対応</li>
<li>ファイルからではなく、文字列を XML として読み込むよう変更</li>
<li>__getattr__ メソッドにより、Element.getElements() のショートカットを作成 (詳細は後述)</li>
</ul>
<p>ただし、あくまでも習作であり、エラー処理等もかなり甘いので、実用的とは言えません。<br />
その代わり、ちょっと遊ぶ程度にはちょうどいい手軽さかも。</p>
<p><strong>コード</strong></p>
<p><script src="http://gist.github.com/387300.js?file=xml2obj.py"></script></p>
<p><strong>テストコード</strong></p>
<p><script src="http://gist.github.com/387300.js?file=xml2objtestcase.py"></script></p>
<p><strong>__getattr__ による Element.getElements() へのショートカットについて</strong></p>
<p>__getattr__ というのは、インスタンスに存在しないプロパティを呼び出そうとしたときに呼び出されるもので、PHP でいうと、マジックメソッドの <a href="http://jp.php.net/__get">__get</a> にあたるものと言えるでしょう。</p>
<p>これにより、以下のようなショートカットを実現しています。意味はどちらも同じです。</p>
<p><script src="http://gist.github.com/387300.js?file=sample.py"></script></p>
<p><strong>終わりに</strong></p>
<p>もともと GAE に組み込むことを目的として上記ライブラリを修正したわけですが、実はまだ組み込めてません・・・。ただ、expat を GAE に組み込んでいる例はネット上に転がっているので、まぁこれもいけるのではないかと。真相はまた今度。</p>
<p><strong>関連リンク</strong></p>
<ul>
<li><a href="http://www.python.jp/doc/2.4/lib/module-xml.parsers.expat.html">xml.parsers.expat &#8212; Expat を使った高速な XML 解析</a></li>
<li><a href="http://typea.info/blg/glob/2009/08/amazon_product_advertising_api_1.html">Amazon Product Advertising API を GAE/Python に組み込む</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.yuyat.jp/archives/311/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google App Engine の開発サーバーで DataStore を保持し続ける</title>
		<link>http://blog.yuyat.jp/archives/307</link>
		<comments>http://blog.yuyat.jp/archives/307#comments</comments>
		<pubDate>Sat, 01 May 2010 11:51:17 +0000</pubDate>
		<dc:creator>yuya</dc:creator>
				<category><![CDATA[Google App Engine]]></category>
		<category><![CDATA[Tech]]></category>
		<category><![CDATA[GAE]]></category>

		<guid isPermaLink="false">http://blog.yuyat.jp/?p=307</guid>
		<description><![CDATA[ゴールデンウィーク中にサービスをひとつリリースするべく、Google App Engine (以下 GAE) に奮闘中です。なので、しばらくは、Google App Engine 上での開発を行うにあたっての Tips  [...]]]></description>
			<content:encoded><![CDATA[<p>ゴールデンウィーク中にサービスをひとつリリースするべく、Google App Engine (以下 GAE) に奮闘中です。なので、しばらくは、Google App Engine 上での開発を行うにあたっての Tips 的なエントリーが続きそうです。</p>
<p>さて、本題ですが、DataStore はもともと永続化しているものですが、ここでの話は<strong>「開発環境の再起動をする度に DataStore がクリアされるのを何とかしたい」</strong>という話です。</p>
<p>どういうことかというと、GAE の開発サーバー dev_appserver.py (Python 版) では DataStore のファイルがテンポラリーフォルダ (Linux だと /tmp) に保存されるので、<strong>OS を再起動したりすると、DataStore がクリアされてしまう</strong>ので、それを防ごう、という話です。</p>
<p><strong>やり方</strong></p>
<p>dev_appserver.py の起動時に、&#8211;datastore_path というオプションで保存ファイル名を指定してあげれば OK。</p>
<pre class="brush:bash">
$ dev_appserver.py . --datastore_path=PATH
</pre>
<p>こうすれば、テスト時のデータを保持し続けることができます。</p>
<p><strong>注意</strong></p>
<p>GAE プログラムのフォルダ内に保存すると、本番環境へのデプロイ時に一緒にアップロードされるので、保存先は外のフォルダに保存しましょう。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.yuyat.jp/archives/307/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

