Ruby   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ruby – 在生产服务器上使用DataMapper和Sinatra设置数据库的正确方法是什么?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
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 @R_843_6964@,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

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

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

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

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

大佬总结

以上是大佬教程为你收集整理的ruby – 在生产服务器上使用DataMapper和Sinatra设置数据库的正确方法是什么?全部内容,希望文章能够帮你解决ruby – 在生产服务器上使用DataMapper和Sinatra设置数据库的正确方法是什么?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。