使用Sinatra时,与数据库通信的最佳方式是什么?

Chr*_*ins 33 ruby database orm sinatra

据我了解,与Rails不同,Sinatra框架不提供ORM.在这种情况下,您如何与Sinatra应用程序中的数据库通信?或者Sinatra仅适用于不使用数据库的应用程序?

Bob*_*man 60

如果您正在使用Sinatra,我不能足够推荐DataMapper.我有几个Rails应用程序,我坚持使用ActiveRecord,而且我一直在诅咒它的缺点和设计缺陷.如果你在Sinatra上,DataMapper是一个非常实用的选择.

require "rubygems"
require "sinatra"
require "datamapper"

DataMapper.setup(:default, "sqlite3::memory:")

class Post
  include DataMapper::Resource

  property :id,    Integer, :serial => true
  property :title, String
end

Post.auto_migrate!
first_post = Post.new
first_post.title = "First!"
first_post.save

get "/" do
  Post.get(1).title
end
Run Code Online (Sandbox Code Playgroud)

  • `DataMapper.setup(:default,"sqlite3:path/to/db/file.db")` (12认同)
  • 需要'data_mapper' (6认同)

Mik*_*use 29

如果您喜欢ActiveRecord,请使用它.或者是其他东西.例如,Datamapper.对于带有SQLite的AR,这适用于:

require 'rubygems' # may not be needed, depending on platform
require 'sinatra'
require 'active_record'

class Article < ActiveRecord::Base
end

get '/' do
  Article.establish_connection(
    :adapter => "sqlite3",
    :database => "hw.db"
  )
  Article.first.title
end
Run Code Online (Sandbox Code Playgroud)

  • 由于'activerecord'已被弃用,请改用'require active_record'. (9认同)