加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – 在生产服务器上使用DataMapper和Sinatra设置数据库的正

发布时间:2020-12-16 19:57:05 所属栏目:百科 来源:网络整理
导读:从 DataMapper document起,我认为至少有四个功能需要被调用来进行数据库设置: DataMapper.setup(:default,'sqlite:///path/to/project.db')DataMapper.finalizeDataMapper.auto_migrate!DataMapper.auto_upgrade! 在许多DataMapper Sinatra教程中,我了解到a
从 DataMapper document起,我认为至少有四个功能需要被调用来进行数据库设置:
DataMapper.setup(:default,'sqlite:///path/to/project.db')
DataMapper.finalize
DataMapper.auto_migrate!
DataMapper.auto_upgrade!

在许多DataMapper Sinatra教程中,我了解到auto_migrate!和auto_upgrade!每次应用程序在生产服务器上加载时,都不应该被调用.但是与此同时,许多示例将这些函数称为sinatra应用程序的主要ruby文件,例如app.rb,无需额外检查.一些例子根本不会调用finalize.到目前为止,我感到困惑,我不知道在生产服务器上该怎么做.

以这个简单的app.rb为例,我有一些问题:

>哪里和什么时候应该最终被调用?
>首次部署应用程序时,生产服务器上没有数据库文件,如何自动创建?还是手动创建project.db文件?
>自从auto_upgrade!包装在:开发块,它不会在生产服务器上调用.当我添加或删除列时,我应该如何升级数据库?

require 'sinatra'
require 'data_mapper'

configure do
  DataMapper.setup :default,"sqlite3://#{Dir.pwd}/project.db"
end

class Book
  include DataMapper::Resource
  property :id,Serial
  property :title,Text

  belongs_to :author
end

class Author
  include DataMapper::Resource
  property :id,Serial
  property :name,Text

  has n,:books
end

configure :development do
  DataMapper.auto_upgrade!
end

get '/:id' do
  @author = Author.get params[:id]
  erb :list_author_and_his_books # The template has nothing to do with this question,ignore it
end

get '/new' do
  # Some code for user to input book or author details
end

get '/create' do
  # Some code to create book or author in db
end

感谢您阅读这篇长篇文章:D

解决方法

哪里和什么时候应该完成?

从http://rdoc.info/github/datamapper/dm-core/DataMapper#finalize-class_method

This method should be called after loading all models and plugins.

首次部署应用程序时,如何自动创建?还是手动创建project.db文件?

这取决于您的托管安排,但主要的工作是将迁移运行在Rake任务中,并在应用程序部署时运行它们.如果您使用Sqlite,这将创建数据库(尽管在某些主机上,您不允许更新文件系统).我不认为使用Sqlite来生产数据库是个好主意,但这是你的决定.

自从auto_upgrade!包装在:开发块,我应该如何升级数据库?

使用耙子任务.在每次部署之后,您将运行“db:migrate:up”(或任何您称之为)任务,并运行最新的迁移.您可能会从Padrino’s Rake tasks for DataMapper获得一些想法

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读