Getting started

Here’s how to get rolling:

  1. Install the gems

    $ sudo gem install google-appengine
  2. Assign an app identifier

    Simply create an application at appspot.com,
    we'll refer to that as my-app in this document.

  3. Generate your rails app

    $ rails my-app; cd my-app;
  4. Generate a rackup file

    In the same folder, save this as config.ru.

    require 'appengine-rack'
    AppEngine::Rack.configure_app(
      :application => 'my-app',
      :version => 1 )
    
    %w{R db/ doc/ log/ script/ test/ tmp/}.each do |x|
      AppEngine::Rack.app.resource_files.exclude "/#{x}**"
    end
    ENV['RAILS_ENV'] = AppEngine::Rack.environment
    require 'config/environment'
    
    run ActionController::Dispatcher.new
    
  5. Check gem sources for datamapper

    $ gem sources

    Only when missing, add it like this...
    $ sudo gem source -a http://gems.datamapper.org

  6. Install gems into your app

    $ appcfg.rb gem install rails \
      dm-appengine rails_datamapper
  7. Generate a model

    $ ./script/generate dm_model book \
      title:string summary:text image_url:string \
      available:boolean pages:integer \
      -f --skip-timestamps --skip-migration
  8. Modify the Rails Initializer

    Add the following to your config/environment.rb.

    # Set DataMapper to use dm-appengine adapter
    require 'dm-core'
    DataMapper.setup(:default, "appengine://auto")
    
    # Set Logger from appengine-apis, all environments
    require 'appengine-apis/logger'
    config.logger = AppEngine::Logger.new
    
    # Skip frameworks you're not going to use.
    config.frameworks -= [ :active_record ]
    
  9. Run your app locally

    $ dev_appserver.rb .
  10. Open up the console

    $ appcfg.rb run -S irb
    > require 'config/environment'
  11. Deploy to App Engine

    $ appcfg.rb update .