We assumed Rails 2 would never work without rubygems, and we committed to gem bunlder for JRuby on App Engine, so we were waiting for Rails 3. Fortunately, Takeru Sasaki was able to patch the Rails 2.3.5 calls to rubygems, and now we have it working. Rails 2.3.5 currently spins up several seconds faster than Rails 3, and just a few seconds behind Sinatra.
See the TinyDS version also: gist.github.com/269075
The gems for the development environment include a pre-release appengine-tools gem that provides a pre-release version of jruby-rack.
sudo gem install google-appengine sudo gem install appengine-tools --pre
Create a folder for your app
mkdir rails_app; cd rails_app
Download and run the setup script
curl -O http://appengine-jruby.googlecode.com/hg/demos/rails2/rails2_appengine.rb ruby rails2_appengine.rb
Start development server
dev_appserver.rb .
Open local console
appcfg.rb run script/console
Publish to production
appcfg.rb update .
We disable rubygems in the development environment, and the generators from Rails 2 perform various Gem dependency checks that are too difficult to patch, so we run the generators from the MRI.
sudo gem install rails rails_dm_datastore sudo gem install activerecord-nulldb-adapter
Generate a restful controller and add it to config/routes.rb
./script/generate scaffold article title:string summary:text \ url:string phone:string -f --skip-migration
Generate a model for DataMapper
./script/generate dm_model article title:string summary:text \ url:link phone:phone_number -f ./script/generate dm_model article title:string summary:text url:string -f
You’ve created a RESTful controller, and a DataMapper model
If you want to use the XML versions of the generated scaffolds, you must install the dm-serializer gem because DataMapper doesn't generates valid XML. Of course, you have to require the gem somewhere before you models are used.