#chiroito ’s blog

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

GAE+Ruby+Rails開発環境構築とプロジェクト作成 on Windows

Google App Engine上でRuby on Railsを動かすための環境構築とプロジェクト作成を行いました。
公開されている情報はLinuxでの環境構築が大半を占め、JRubyCygwinを入れていたりRailsのバージョンが2.3.5のモノがほとんどでした。
今回はWindows7でRails2.3.8を用いたいと思います。
appengine-jrubyプロジェクトによると現時点ではRails2.3.10までがサポートされているようです。
appengine-jruby - Project Hosting on Google Code

目的

C:\Users\xxx\gaerailsにGAE用JRuby on Railsプロジェクトを作成する

環境

Windows7 Ultimate
(この段階ではRubyJRubyは一切インストールされていません。)

Ruby 1.8.7
Rails 2.3.8
各モジュールのバージョンは下記のgem list出力を参照して下さい。
環境構築とプロジェクト作成にJRubyは不要です。

ダウンロード

こちらから1.8.7の最新版をダウンロードします。
RubyInstaller for Windows

GAE用JRuby on Railsのプロジェクトを作成してくれるスクリプトを取得
rails238_appengine.rb

環境の構築

環境変数を下記を参考に設定します。
環境変数の設定方法が分からない場合はコマンドプロンプトを開く度に下記を実行して下さい。
C:\Users\xxx>set RUBY_HOME=C:\Ruby187
C:\Users\xxx>set Path=%RUBY_HOME%\bin;%Path%
Rubyのモジュールと環境の状況を確認をしましょう。
C:\Users\xxx>gem list

*** LOCAL GEMS ***

C:\Users\xxx>gem env
RubyGems Environment:
- RUBYGEMS VERSION: 1.3.7
- RUBY VERSION: 1.8.7 (2010-12-23 patchlevel 330) [i386-mingw32]
- INSTALLATION DIRECTORY: C:/Ruby187/lib/ruby/gems/1.8
- RUBY EXECUTABLE: C:/Ruby187/bin/ruby.exe
- EXECUTABLE DIRECTORY: C:/Ruby187/bin
- RUBYGEMS PLATFORMS:
- ruby
- x86-mingw32
- GEM PATHS:
- C:/Ruby187/lib/ruby/gems/1.8
- C:/Users/xxx/.gem/ruby/1.8
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :benchmark => false
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
- http://rubygems.org/
モジュールのインストールと確認を行います。
コマンドとオプションは下記の通りです。

モジュールのインストールには gem install モジュール名
モジュールのアンインストールには gem uninstall モジュール名
バージョンを指定するオプションは -v バージョン名
C:\Users\xxx>gem install google-appengine
C:\Users\xxx>gem install rails -v 2.3.8

C:\Users\xxx>gem list

*** LOCAL GEMS ***

actionmailer (2.3.8)
actionpack (2.3.8)
activerecord (2.3.8)
activeresource (2.3.8)
activesupport (2.3.8)
appengine-apis (0.0.22)
appengine-rack (0.0.12)
appengine-sdk (1.4.0)
appengine-tools (0.0.17)
bundler08 (0.8.5)
google-appengine (0.0.19)
jruby-jars (1.5.6)
jruby-rack (1.0.4)
rack (1.2.1, 1.1.0)
rails (2.3.8)
rake (0.8.7)
rubyzip (0.9.4)

プロジェクトの作成

まず、ダウンロードしたrails238_appengine.rbをプロジェクトを作成するフォルダへコピーします。
このままではエラーが出るため62行目を修正します。
変更前
FileUtils.rm 'public/robots.txt'
変更後
FileUtils.rm( 'public/robots.txt') rescue true
実行してプロジェクトを作成します。
C:\Users\xxx\gaerails>ruby rails238_appengine.rb
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/initializers/cookie_verification_secret.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
create public/favicon.ico
create 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'
##
これで、NetBeansなどのIDEからプロジェクトを開くことが可能になります。

なお、rails238_appengine.rbの62行目を修正しない場合は下記のようなエラーが出ます。
C:\Users\xxx\gaerails>ruby rails238_appengine.rb
C:/Ruby187/lib/ruby/1.8/fileutils.rb:1299:in `unlink': No such file or directory - public/robots.txt (Errno::ENOENT)
from C:/Ruby187/lib/ruby/1.8/fileutils.rb:1299:in `remove_file'
from C:/Ruby187/lib/ruby/1.8/fileutils.rb:1307:in `platform_support'
from C:/Ruby187/lib/ruby/1.8/fileutils.rb:1298:in `remove_file'
from C:/Ruby187/lib/ruby/1.8/fileutils.rb:772:in `remove_file'
from C:/Ruby187/lib/ruby/1.8/fileutils.rb:550:in `rm'
from C:/Ruby187/lib/ruby/1.8/fileutils.rb:549:in `each'
from C:/Ruby187/lib/ruby/1.8/fileutils.rb:549:in `rm'
from rails238_appengine.rb:62

参考

gist: 486250 - Rails 2.3.8 on App Engine with DataMapper- GitHub
gist: 269075 - Rails 2.3.10 on App Engine with TinyDS- GitHub