我们应该在提交GIT时包含schema.rb吗?还是我们应该忽略它?正确的方法是什么?

推荐答案

Rails 2的标准schema.rb文件在文件顶部的注释块末尾有以下内容:

# It's strongly recommended to check this file into your version control system.

我看到的Rails 3schema.rb也说了同样的话.我认为这句话说明了一切.


Update in response to comments:

任何与schema.rb有关的更新/合并问题都应该通过整理冲突的迁移来解决,这样schema.rb将作为解决实际问题的副作用得到修复.

是的,schema.rb是一个生成的文件,但它仅在文本编辑器生成pancake.rb模型文件或生成未编辑的脚手架文件的意义上生成.

是的,您可以通过构建一个新数据库,然后运行所有迁移来重建schema.rb文件.但是,您应该时不时地清理旧的迁移,以避免每次都要判断数百个迁移文件,因此"重建并运行所有迁移"通常不是高度活跃的项目中的选项.

Ruby-on-rails相关问答推荐

Rails TurboStream:可以向元素动态添加一个css类吗?

使用ActiveSupport::TimeWithZone将UTC转换为用户定义的时区

使用带有 Paper Trail gem 的子类

当我必须更改 rspec 中的方法时,如何检测时间?

ActiveRecord 包括.指定包含的列

Rails - 设计 - 登录时出现错误消息?

SQLite3::BusyException

从 Authlogic 迁移到 Devise

RSpec 设置会话对象

rails 4.0, rake db:sessions:create

从 before_action 中排除控制器

如何在 Rails ActiveRecord 中指定日期小于今天的条件

Ruby on Rails 基本概念总结

如何在 RSpec 中包含 Rails 助手

Sidekiq 在 docker-compose 上的 127.0.0.1:6379 (Errno::ECONNREFUSED) 上连接到 Redis 时出错

如何使用 Rails 3 获取请求的目标控制器和操作?

从 Rails 中的 ActiveRecord::RecordNotFound 救援

用于在多行上链接调用的 Ruby 约定

您可以在弹性 beantalk 环境中运行 rails 控制台或 rake 命令吗?

期望 true 响应 true?