Docs 菜单
Docs 主页
/ / /
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 Atlas 帐户并在 Atlas 中创建免费的 MongoDB 集群,而无需在本地下载、安装和运行 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的文件。 首先,some 要求:

require 'sinatra'
require 'mongoid'

加载 Mongoid 配置文件并配置 Mongoid。 当 Mongoid 与 Rails 一起使用时,这是自动完成的,但由于我们将 Mongoid 与 Sinatra 一起使用,因此我们需要自己执行此操作:

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