Docs Menu
Docs Home
/ / /
Mongoid
/

はじめに(Sinatra)

項目一覧

  • 新しいアプリケーション
  • Git リポジトリの作成
  • Gemfile の作成
  • 依存関係のインストール
  • MongoDB をローカルで実行
  • MongoDB Atlas の使用
  • 基本的なアプリケーション
  • アプリケーションを実行する
  • 既存のアプリケーション

このセクションでは、データアクセス用に Mongoid を使用して新しい Sinatra アプリケーションを作成する方法を説明します。 このプロセスは、Ruby on Rails を使用していない他の Ruby アプリケーションでも同様です。

このアプリケーションの完全なソースコード は mongoid-demoGithub リポジトリ で入手できます

必須ではありませんが、アプリケーション用に Git リポジトリを作成することをお勧めします。

git init blog
cd blog

このチュートリアルに従い、変更をコミットします。

次の内容で Gemfileという名前のファイルを作成します。

source 'https://rubygems.org'
gem 'sinatra'
gem 'mongoid'
gem 'puma'

以下のコマンドを実行して、依存関係をインストールします。

gem install bundler
bundle install

このコマンドはGemfile.lockという名前のファイルを生成し、Git リポジトリにコミットすることを推奨します。

MongoDB を使用してローカルで開発するには、 MongoDB をダウンロードしてインストールします。

MongoDB をインストールして実行したら、配置を指すようにconfig/mongoid.ymlという名前のファイルを作成します。 たとえば、スタンドアロンのmongodをデフォルト ポートで起動した場合、次の内容が適切です。

development:
clients:
default:
database: blog_development
hosts:
- localhost:27017
options:
server_selection_timeout: 1

MongoDB をダウンロードしてローカルにインストールして実行する代わりに、無料の MongoDB Atlas アカウントを作成し、 Atlas に無料の MongoDB クラスターを作成できます。 クラスターが作成されたら、クラスターページに接続する手順に従って URI を取得します。 Ruby ドライバー2.5以降の形式を使用します。

次の内容でconfig/mongoid.ymlという名前のファイルを作成し、URI をクラスターの実際の URI に置き換えます。

development:
clients:
default:
uri: mongodb+srv://user:pass@yourcluster.mongodb.net/blog_development?retryWrites=true&w=majority
options:
server_selection_timeout: 5

次の内容でapp.rbという名前のファイルを作成します。 最初に、一部の では次のものが必要です。

require 'sinatra'
require 'mongoid'

Mongoid 構成ファイル をロード、Mongoid を構成します。 これは Mongoid を Rails で使用すると自動的に行われますが、Sinatra で Mongoid を使用しているため、これを自分で行う必要があります。

Mongoid.load!(File.join(File.dirname(__FILE__), 'config', 'mongoid.yml'))

これで、いくつかのモデルを定義できます。

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

... いくつかのルートを追加します。

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

アプリケーションを起動します。

bundle exec ruby app.rb

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"}}]}

既存の Sinatra アプリケーションで Mongoid の使用を開始するには、手順は基本的に新しいアプリケーションの場合と同じです。

  1. mongoidの依存関係をGemfileに追加します。

  2. mongoid.yml構成ファイルを作成します。

  3. 構成ファイル をロードし、アプリケーションで Mongoid を構成します。

  4. Mongoid モデルを定義します。

戻る

Tutorials