我的数据库使用 PostgreSQL。我在 Mac 上开发,需要这条线:
# db/schema.rb on Mac environment
enable_extension "plpgsql"
但是,Linux 上不需要该扩展。
在这种情况下,我们是否应该忽略 schema.rb 并通过 db:migrate 为开发和生产环境生成它?
我的数据库使用 PostgreSQL。我在 Mac 上开发,需要这条线:
# db/schema.rb on Mac environment
enable_extension "plpgsql"
但是,Linux 上不需要该扩展。
在这种情况下,我们是否应该忽略 schema.rb 并通过 db:migrate 为开发和生产环境生成它?
据我了解,问题在于自动生成的 schema.rb 在生产和开发方面会有所不同,因此由于这条额外的行,会导致 git 中的文件发生更改。
该行是由 mac 上的 postgres 适配器生成的吗?如果它是手动添加的,我会尝试将它放在其他地方,也许在初始化程序中(您可以通过这里的一些东西根据平台切换它的使用:Detecting Operating Systems in Ruby)。
我会一直使用迁移。schema.rb
只有红宝石的缺点。如果 - 出于某种原因 - 您在迁移中使用纯 SQL,可能会使用BIGSERIAL
而不是SERIAL
这样,您将遇到schema.rb
. 切换到基于 SQL 的模式转储只能解决部分问题,而将可能需要的数据更正或数据种子排除在外。