入门 (Sinatra)
新应用程序
本节介绍如何使用 Mongoid 创建新的 Sinatra 应用程序进行数据访问。 对于其他未使用 Ruby on Rails 的 Ruby 应用程序,该过程类似。
如需此应用程序的完整源代码,请访问 mongoid-demoGithub 存储库 。
创建 Git 存储库
虽然不是必需,但我们建议为您的应用程序创建一个 Git 存储库:
git init blog cd blog
按照本教程提交更改。
创建 Gemfile
使用以下内容创建名为 Gemfile
的文件:
source 'https://rubygems.org' gem 'sinatra' gem 'mongoid' gem 'puma'
安装依赖项
运行以下命令以安装依赖项:
gem install bundler bundle install
此命令将生成一个名为Gemfile.lock
的文件,建议将其提交到 Git 存储库。
在本地运行 MongoDB
要使用 MongoDB 进行本地开发,请下载并安装 MongoDB 。
安装并运行 MongoDB 后,创建一个名为config/mongoid.yml
的文件,指向您的部署。 例如,如果您在默认端口上启动了独立运行的mongod
,则以下内容将适用:
development: clients: default: database: blog_development hosts: - localhost:27017 options: server_selection_timeout: 1
使用 MongoDB Atlas
您可以创建一个免费的 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,步骤与上面针对新应用程序给出的步骤基本相同:
将
mongoid
依赖项添加到Gemfile
中。创建
mongoid.yml
配置文件。加载配置文件并在应用程序中配置 Mongoid。
定义 Mongoid 模型。