ActiveGist! <img src=“https://secure.travis-ci.org/sinisterchipmunk/active-gist.png” /> <img src=“https://codeclimate.com/github/sinisterchipmunk/active-gist.png” /> <img src=“https://coveralls.io/repos/sinisterchipmunk/active-gist/badge.png” alt=“Coverage Status” />¶ ↑
I needed a Ruby library to perform basic create, read, update and delete operations on Gists. I looked, I saw basically nothing (except hacky, test-less tools), and I decided to roll my own. Here’s the result.
ActiveGist is so named because it wraps GitHub’s Gist API with a class implementing the ActiveModel modules. So, it should be pretty familiar to anyone who’s ever used models in Ruby on Rails.
Installation¶ ↑
The obligatory installation steps…
gem install activegist
Usage¶ ↑
require 'activegist' # Set up credentials. A required step, as far as I know. ActiveGist::API.username = "gist owner's github username" ActiveGist::API.password = "gist owner's github password" # Various examples of creating and saving a new gist gist = ActiveGist.new gist.description = "gist description" gist.files #=> {} gist.files['test.txt'] = { :content => 'file content' } gist.save #=> true or false gist.save! #=> raise an error on validation error # gists are private by default. To make them public, pass a :public option. gist = ActiveGist.new :public => true, :description => "optional", :files => { 'test.txt' => { :content => 'file content' } }) gist.save gist = ActiveGist.create!(:files => { 'test.txt' => { :content => 'file content' } }) # Check if gist is valid gist = ActiveGist.new gist.valid? #=> false gist.errors.full_messages #=> ["Files can't be blank"] gist.errors[:files] #=> ["can't be blank"] # Find an existing gist if you know its ID gist = ActiveGist.find id gist.public? #=> true if the gist is public, false otherwise gist.files #=> # {"test.txt"=> # {"type"=>"text/plain", # "content"=>"file content", # "raw_url"=>"https://gist.github.com/.../test.txt", # "size"=>12, # "filename"=>"test.txt", # "language"=>"Text" # } # } # Fork an existing gist. Yes, really. gist = ActiveGist.find id forked_gist = gist.fork # Check if gist is already starred, then star it, then unstar it. # (Unlike most methods, these take effect immediately!) gist = ActiveGist.find id gist.starred? #=> boolean gist.star! gist.unstar! # Get a whole bunch of gists. ActiveGist.all ActiveGist.all :public # returns only public gists ActiveGist.all :starred # returns only starred gists # Get just one gist. ActiveGist.first ActiveGist.last # Count gists. ActiveGist.count ActiveGist.count :public ActiveGist.count :starred # Save changes to a gist gist = ActiveGist.first gist.files['test.txt'][:content] = "Updated content" gist.changed? #=> true gist.save #=> true if saved, false if validation failed gist.save! #=> true if saved, raise error if validation failed # Destroy the gist, it's just a test gist anyway gist.destroy
Good Lovin’¶ ↑
Released under the MIT license. Copyright © 2012, Colin MacKenzie IV