Skip to content

Instantly share code, notes, and snippets.

@ismaels
Last active December 11, 2015 09:28
Show Gist options
  • Save ismaels/4579751 to your computer and use it in GitHub Desktop.
Save ismaels/4579751 to your computer and use it in GitHub Desktop.
Sinatra example app using ActiveRecord ORM
# extracted from http://fernandomantoan.com/javascript/serie-backbone-js-parte-3-model/
require 'sinatra'
require 'json'
require 'active_record'
# O JSON não deve conter um elemento ROOT, apenas os atributos
ActiveRecord::Base.include_root_in_json = false
class Post < ActiveRecord::Base
end
Post.establish_connection(
:adapter => "sqlite3",
:database => "data.db"
)
# Apresenta a página contendo o código HTML e Javascript
get '/' do
File.read(File.join('public', 'index.html'))
end
# Endpoint GET para obter a última postagem do banco de dados
get '/posts' do
content_type :json
Post.last.to_json
end
# Endpoint POST para criar uma nova postagem
post '/posts' do
data = JSON.parse request.body.read
post = Post.new
post.title = data['title']
post.text = data['text']
post.save
end
# Endpoint PUT para atualizar uma postagem existente
put '/posts/:id' do
data = JSON.parse request.body.read
post = Post.find params[:id]
post.title = data['title']
post.text = data['text']
post.save
end
# Endpoint DELETE para remover uma postagem existente
delete '/posts/:id' do
Post.destroy params[:id]
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment