我是Rails的新手,我正在尝试部署我的第一个项目。我使用的是Rails3、ruby 1.8.7、Passanger、Mysql和Git
我遵循了很多教程来学习如何使用capistrano进行部署,但有一个问题我无法解决。在教程中,他们从来没有讨论过schema.rb,如果这个文件负责我已经完成的迁移,当我们部署应用程序时,capistrano将所有文件复制到“当前”文件夹(schema.rb to),它如何在生产服务器上进行正确的迁移。我应该告诉capistrano为“当前”文件夹创建一个指向正确schema.rb文件的简单链接吗?如果是,我如何做到这一点?小窍门。
发布于 2011-02-22 20:29:53
schema.rb文件包含数据库定义。它不负责任何迁移。
迁移包含在db/migrations文件夹中。当您部署新版本并要求Capistrano迁移当前数据库时,Capistrano将调用rake db:migrate。迁移任务不依赖于schema.rb。它连接到数据库,从schema表中读取已执行迁移的列表,并执行db/migrations中该表中不存在记录的所有文件。
schema.rb文件仅在调用rake db:schema:load或引导Rails时使用。在后一种情况下,Rails将使用模式来防止每次访问模型时都检查数据库结构。
也就是说,schema.rb文件必须在您的配置管理中进行版本控制,并且您必须在部署过程中包含它。你不需要做任何特别的事情。Capistrano会像所有其他文件一样从SCM中检出文件,除非您忽略了它。
https://stackoverflow.com/questions/5077917
复制相似问题