为两个数据库生成 schema.rb 文件

Posted

技术标签:

【中文标题】为两个数据库生成 schema.rb 文件【英文标题】:generating schema.rb file for two databases 【发布时间】:2012-04-17 19:31:06 【问题描述】:

在我的 Rails 应用程序中,我有两个数据库,我可以通过以下设置启动并运行它

database.yml

development: &defaults
  adapter: mysql
  encoding: utf8
  database: <Database1>
  username: <user_name>
  password: <password>
  host: localhost

second_development: &defaults
  adapter: mysql
  encoding: utf8
  database: <Database2>
  username: <user_name>
  password: <password>
  host: localhost

test: &defaults
  adapter: mysql
  encoding: utf8
  database: <Database1_test>
  username: <user_name>
  password: <password>
  host: localhost

second_test: &defaults
  adapter: mysql
  encoding: utf8
  database: <Database2_test>
  username: <user_name>
  password: <password>
  host: localhost

但问题是在运行测试用例时,我使用的是“mocha”、“guard”和“notahat-machinist”,当我尝试运行测试用例时,它首先运行 schema.rb 文件。但问题是它只从第一个测试数据库创建模式

test: &defaults
      adapter: mysql
      encoding: utf8
      database: <Database1_test>
      username: <user_name>
      password: <password>
      host: localhost 

这将使与第二个测试数据库“Database2_test”相关的测试失败。解决方法是什么。

生成一个包含数据库模式的 schema.rb 文件。

提前致谢

【问题讨论】:

为什么需要在测试框架的一次运行中对第一个测试环境和第二个测试环境进行测试? 嗨@sarnold,感谢重播,我的单元测试分布在两个数据库中,所以在运行单元测试时我需要两个数据库 【参考方案1】:

schema.rb 生成由连接定义。因此,您需要在测试中使用良好的连接以获得良好的架构。

【讨论】:

嗨@Singara,感谢重播。我的两个连接都在工作,我的单元测试分布在两个数据库中,所以在运行单元测试时我需要两个数据库

以上是关于为两个数据库生成 schema.rb 文件的主要内容,如果未能解决你的问题,请参考以下文章

我可以从我的 schema.rb on rails 创建一个脚手架吗?

是否rake db:schema:dump从迁移或数据库本身重新创建schema.rb?

为啥 Active Record 发送的数据与 schema.rb 不同?

schema.rb 文件未更新

ruby 我的Schema.rb文件

Rails 5:为啥即使我删除了迁移文件,rails 也会向 schema.rb 添加列