firebase
¶ ↑
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.
Installation¶ ↑
gem install firebase
Usage¶ ↑
base_uri = 'https://<your-firebase>.firebaseio.com/' firebase = Firebase::Client.new(base_uri) 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"}'
Authentication¶ ↑
If you have a read-only namespace, you need to authenticate your Firebase
client. firebase-ruby
will attempt to determine if you are using the old or new authentication method by whether your auth string is a valid JSON string or not.
Using Firebase
Database Secret (deprecated)¶ ↑
# Using Firebase Database Secret (deprecated) firebase = Firebase::Client.new(base_uri, db_secret)
Using Firebase
Admin SDK private key¶ ↑
Go to the Firebase
console and under Project Settings
-> Service Accounts
-> Firebase Admin SDK
click on GENERATE NEW PRIVATE KEY
. Save the json file and use it like this:
# Using Firebase Admin SDK private key private_key_json_string = File.open('/path/to/your/generated/json').read firebase = Firebase::Client.new(base_uri, private_key_json_string)
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 })
To update multiple values that are not direct descendants, supply their paths as keys in the payload to update:
# note the empty path string here as the first argument firebase.update('', { "users/posts/#{postID}" => true, "posts/#{postID}" => text })
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::Client.new(base_uri) # 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¶ ↑
Copyright © 2013 Oscar Del Ben. See LICENSE.txt for further details.