Slide 1

Slide 1 text

Her Rémi Prévost — OpenCode #5

Slide 2

Slide 2 text

“ Her is an ORM (Object Relational Mapper) that maps REST resources to Ruby objects. It is designed to build applications that are powered by a RESTful API instead of a database.

Slide 3

Slide 3 text

SELECT * FROM users WHERE `id` = 1 GET /users/1 SQL REST

Slide 4

Slide 4 text

require "open-uri" class GitHub def self.fetch_repository(repo) begin res = open("https://api.github.com/repos/#{repo}") rescue return nil end Hashie::Mash.construct(JSON.parse(res.read)) end end @repository = GitHub.fetch_repository("remiprev/her") @repository.url # => "http://remiprev.github.com/her"

Slide 5

Slide 5 text

class GitHub include HTTParty base_uri "https://api.github.com" def self.fetch_repository(repo) response = get("/repos/#{repo}") if response.success? Hashie::Mash.construct(JSON.parse(response.body)) else raise "Repository Not Found" end end end @repository = GitHub.fetch_repository("remiprev/her") @repository.url # => "http://remiprev.github.com/her"

Slide 6

Slide 6 text

Her::API.setup :url => "https://api.github.com" do |c| c.use Her::Middleware::DefaultParseJSON c.use Faraday::Adapter::NetHttp end class Repo include Her::Model end @repository = Repo.find("remiprev/her") @repository.url # => "http://remiprev.github.com/her"

Slide 7

Slide 7 text

class Repo include Her::Model def fresh? self.pushed_at > 1.week.ago end end @repository = Repo.find("remiprev/her") @repository.fresh? # => true

Slide 8

Slide 8 text

• Associations/relations • APIs multiples • Hooks • Tests Autres fonctionnalités

Slide 9

Slide 9 text

• Gestion des erreurs/exceptions • Mise en cache des objets À améliorer

Slide 10

Slide 10 text

Merci! http://remiprev.github.com/her @remi