Introdução (Sinatra)
Nesta página
Novo aplicativo
Esta seção mostra como criar um novo aplicativo Sinatra usando o Mongoid para acesso a dados. O processo é semelhante para outros aplicativos Ruby que não usam Ruby on Rails.
O código fonte completo deste aplicativo está disponível no Github repositório mongoid-demo do.
Criar repositório Git
Embora não seja necessário, recomendamos criar um repositório Git para seu aplicativo:
git init blog cd blog
Confirme suas alterações conforme segue este tutorial.
Criar arquivo Gem
Crie um arquivo denominado Gemfile
com o seguinte conteúdo:
source 'https://rubygems.org' gem 'sinatra' gem 'mongoid' gem 'puma'
Instalar dependências
Execute os seguintes comandos para instalar as dependências:
gem install bundler bundle install
Este comando gerará um arquivo chamado Gemfile.lock
, que recomendamos confirmar em seu repositório Git.
Execute o MongoDB localmente
Para desenvolver localmente com o MongoDB, baixe e instale o MongoDB.
Após o MongoDB estar instalado e em execução, crie um arquivo denominado config/mongoid.yml
apontando para sua implantação. Por exemplo, se você lançasse um mongod
standalone na porta padrão, o seguinte conteúdo seria apropriado:
development: clients: default: database: blog_development hosts: - localhost:27017 options: server_selection_timeout: 1
Usar o MongoDB Atlas
Em vez de baixar, instalar e executar o MongoDB localmente, você pode criar uma conta gratuita do MongoDB Atlas e criar um cluster MongoDB gratuito no Atlas. Após a criação do cluster, siga as instruções em conectar à página do cluster para obter o URI. Use o driver Ruby 2.5 ou o formato posterior .
Crie um arquivo denominado config/mongoid.yml
com o seguinte conteúdo, substituindo o URI pelo URI real para seu cluster:
development: clients: default: uri: mongodb+srv://user:pass@yourcluster.mongodb.net/blog_development?retryWrites=true&w=majority options: server_selection_timeout: 5
Aplicativo básico
Crie um arquivo denominado app.rb
com o seguinte conteúdo. Primeiro, alguns exigem:
require 'sinatra' require 'mongoid'
Carregue o arquivo de configuração Mongoid e configure o Mongoid. Isso é feito automaticamente quando o Mongoid é usado com Rails, mas como estamos usando o Mongoid com Sinatra, precisamos fazer isso nós mesmos:
Mongoid.load!(File.join(File.dirname(__FILE__), 'config', 'mongoid.yml'))
Agora podemos definir alguns modelos:
class Post include Mongoid::Document field :title, type: String field :body, type: String has_many :comments end class Comment include Mongoid::Document field :name, type: String field :message, type: String belongs_to :post end
... e adicione algumas rotas:
get '/posts' do Post.all.to_json end post '/posts' do post = Post.create!(params[:post]) post.to_json end get '/posts/:post_id' do |post_id| post = Post.find(post_id) post.attributes.merge( comments: post.comments, ).to_json end post '/posts/:post_id/comments' do |post_id| post = Post.find(post_id) comment = post.comments.create!(params[:comment]) {}.to_json end
Executar aplicativo
Inicie o aplicação:
bundle exec ruby app.rb
Experimente algumas solicitações via curl:
curl http://localhost:4567/posts => [] curl -d 'post[title]=hello&post[body]=hello+world' http://localhost:4567/posts => {"_id":{"$oid":"5d8151ec96fb4f0ed5a7a03f"},"body":"hello world","title":"hello"} curl http://localhost:4567/posts => [{"_id":{"_id":{"$oid":"5d8151ec96fb4f0ed5a7a03f"},"body":"hello world","title":"hello"}] curl -d 'comment[name]=David&comment[message]=I+like' http://localhost:4567/posts/5d8151ec96fb4f0ed5a7a03f/comments => {} curl http://localhost:4567/posts/5d8151ec96fb4f0ed5a7a03f => {"_id":{"$oid":"5d8151ec96fb4f0ed5a7a03f"},"title":"hello","body":"hello world","comments":[{"_id":{"$oid":"5d8157ac96fb4f20c5e45c4d"},"message":"I like","name":"David","post_id":{"$oid":"5d8151ec96fb4f0ed5a7a03f"}}]}
Aplicativo existente
Para começar a usar o Mongoid em um aplicativo Sinatra existente, as etapas são essencialmente as mesmas que as fornecidas acima para um novo aplicativo:
Adicione a dependência
mongoid
aoGemfile
.Crie um arquivo de configuração
mongoid.yml
.Carregue o arquivo de configuração e configure o Mongoid no aplicação.
Definir modelos Mongoid.