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

ruby-on-rails – rake db :: migrate实际上是如何工作的

发布时间:2020-12-17 04:29:24 所属栏目:百科 来源:网络整理
导读:我刚刚开始使用 Ruby和Rails,我发现自己真正喜欢的一件事是它让你使用的约定. 我想在我自己的非Ruby项目中模仿这种行为. 我的问题是它是如何实际运作的?我知道我可以浏览一下Rails代码,但是我的理解还不够,知道它里面发生了什么. 我知道它需要一个基线脚本,
我刚刚开始使用 Ruby和Rails,我发现自己真正喜欢的一件事是它让你使用的约定.

我想在我自己的非Ruby项目中模仿这种行为.

我的问题是它是如何实际运作的?我知道我可以浏览一下Rails代码,但是我的理解还不够,知道它里面发生了什么.

我知道它需要一个基线脚本,然后针对它运行更新架构更改.但它怎么知道它的版本是什么?我如何在另一个框架/数据库中模仿它?

解决方法

注意:就Rails 2.x而言,这是正确的.它可能不适用于rails 3,因为我没有像我希望的那样花费太多时间使用Rails 3.

Rails创建一个名为schema_migrations的特殊隐藏表.该表有一个名为version的列.对于每次迁移,此列中都有一行.该值是与迁移文件名时间戳匹配的时间戳.

迁移时,它会按时间顺序查看所有迁移(由于基于timstamp的命名约定,也会按字母顺序排序).对于每次迁移,它都会在schema_migrations表中查找匹配的行.如果找不到,则运行该迁移,并添加表的时间戳.如果确实找到一个,它会认为它已经运行并且只是跳过它.

结果是2个开发人员都可以按任何顺序提交迁移,这很好.这是因为无论数据库何时第一次看到它们,Rails都确切知道哪些迁移已经运行,哪些没有.

所以要自己做这样的事情,你只需要一种方法来永久存储这个状态,说明采取了哪些步骤,哪些步骤没有采取.

(编辑:李大同)

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

    推荐文章
      热点阅读