Ruby Goole AppEngine Support

A gem that wraps GAE functionality.

Currently provides easier access to the User service, Monkey Patches Net::HTTP to work on google app engine, and provides a simple wrapper for the Memcache service.

This is very early work, so not very complete, and not production ready. If you come across any issues, please report them at

Note: do not use jruby-openssl in your app engine application - it’ll break it!. It uses native code, which is not supported on app engine.



Must be installed into JRuby - this gem is useless under normal ruby.

jruby -S gem install ruby-gae-support


In your code:

    require 'rb-gae-support'

as early as possible in your application, to make sure that any usage of Net::HTTP is caught.

You should then be able to use Net::HTTP and gems that require it like normal.

Note: It currently throws java exceptions rather than ruby exceptions - you may need to adjust code to suit. Converting these to the expected ruby exceptions is on the TODO list.


This wraps the user service, which allows you to authenticate users against Google accounts, and check if they have been marked as an Administrator in the admin console.

Get a URL for the login form

Call GAE::User.login_url, passing in the URL you wish to return the user to once they log in. This will return the URL for the login Form. e.g

    redirect_to GAE::User.login_url('/home')

Get a URL to log the user out

Call GAE::User.logout_url, passing in the URL to return the user to after logging out. This will return the logout URL

Check if a User is logged in.

Call GAE::User.logged_in? . Will return true if a user is logged in, false if not.

Check if a User has been set as an Application Admin

Call GAE::User.admin?

Get info about the user

Call GAE::User.current. This will return a GAE::User instance, which you can call email, nickname and auth_domain on to get those details.


Allows you to store & retrieve items in Memcache. Resembles a hash. Note, the type must be Serializable in Java. Strings etc. are OK, for arrays you will need to do something like this (for a array of strings)


Storing data

    GAE::Memcache['key'] = 'value'

Storing data, with an expiry time

    # Expires in 1 minute
    GAE::Memcache.put('key', 'value', 60000)

Retrieving Data

    read_data = GAE::Memcache['key']

Returns nil if item not found.

Deleting data



Author: Lincoln Stoll ( /

License: MIT




Generated with the Darkfish Rdoc Generator 1.1.6.