Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Ruby wrapper for Firebase

firebase Build Status

Ruby wrapper for the Firebase REST API.

Changes are sent to all subscribed clients automatically, so you can update your clients in realtime from the backend.

See a video demo of what's possible.


gem install firebase


base_uri = 'https://<your-firebase>'

firebase =

response = firebase.push("todos", { :name => 'Pick the milk', :priority => 1 })
response.success? # => true
response.code # => 200
response.body # => { 'name' => "-INOQPH-aV_psbk3ZXEX" }
response.raw_body # => '{"name":"-INOQPH-aV_psbk3ZXEX"}'

If you have a read-only namespace, set your secret key as follows:

firebase =, secret_key)

response = firebase.push("todos", { :name => 'Pick the milk', :priority => 1 })

You can now pass custom query options to firebase:

response = firebase.push("todos", :limit => 1)

To populate a value with a Firebase server timestamp, you can set Firebase::ServerValue::TIMESTAMP as a normal value. This is analogous to passing Firebase.ServerValue.TIMESTAMP in the official JavaScript client.

response = firebase.push("todos", {
  :name => 'Pick the milk',
  :created => Firebase::ServerValue::TIMESTAMP

So far, supported methods are:

set(path, data, query_options)
get(path, query_options)
push(path, data, query_options)
delete(path, query_options)
update(path, data, query_options)

Configuring HTTP options

httpclient is used under the covers to make HTTP requests. You may find yourself wanting to tweak the timeout settings. By default, httpclient uses some sane defaults, but it is quite easy to change them by modifying the request object directly:

firebase =
# firebase.request is a regular httpclient object
firebase.request.connect_timeout = 30

More information about Firebase and the Firebase API is available at the official website.


Copyright (c) 2013 Oscar Del Ben. See LICENSE.txt for further details.

Something went wrong with that request. Please try again.