Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 是否有方法传递rake db:schema:load的选项文件_Ruby On Rails_Ruby On Rails 5 - Fatal编程技术网

Ruby on rails 是否有方法传递rake db:schema:load的选项文件

Ruby on rails 是否有方法传递rake db:schema:load的选项文件,ruby-on-rails,ruby-on-rails-5,Ruby On Rails,Ruby On Rails 5,迁移到Rails 5后,我发现schema.rb有额外的更改,例如options参数,它添加了有关用于生成模式的数据库的信息 create_table "student", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci" do |t| t.integer "admission_id" end 我们在Jenkins上使用SQLite3运行RSpec单元测试,该测试一直运行顺利。但是在升级之

迁移到Rails 5后,我发现schema.rb有额外的更改,例如
options
参数,它添加了有关用于生成模式的数据库的信息

create_table "student", options: "ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci" do |t|
  t.integer "admission_id"
end
我们在Jenkins上使用SQLite3运行RSpec单元测试,该测试一直运行顺利。但是在升级之后,模式更改现在是特定于数据库的,这使我们在Jenkins上的测试失败

我想生成两个不同的模式文件(test_schema.rb,schema.rb),一个用于测试,另一个用于生产环境。在运行rake db:schema:load时是否有方法传递模式文件

例如:

rake db:schema:load --schema-file test_schema.rb
如果有人能分享如何使用两个不同的数据库,我也将不胜感激。我知道使用不同的数据库运行测试和生产不是一个好的做法

可能会引起兴趣(在撰写本文时是开放的,似乎没有解决方案)

我认为Rails真的希望schema.rb是不可知的,几乎没有能力拥有单独的模式,但是有一些问题,我想很少有人在一个项目中使用多个数据库供应商


我的最佳建议是git忽略
schema.rb
本身,然后在运行相关的
rails DB:
命令之前和之后复制/重命名特定于DB的命令。

另外,
rake
命令现在统一在
rails
下。e、 g.
rails生成迁移…
rails数据库:迁移
rails服务器
,等等。Git忽略在我的情况下是有意义的:)也可以在rails/rails中进行回复。我还刚刚意识到,由于您特别提到了SQLite3,国外的关键问题也可能会让您焦头烂额。你真的需要DB级别的外键,除非你想因为ActiveRecord的竞争条件而担心每个关系都可能为零、孤儿记录等等。但是,如果您不小心,SQLite中的schema.rb会删除它们,即使现代SQLite支持外键。