gpt4 book ai didi

ruby-on-rails - ruby rails 2.3.5 : Populating my prod and devel database with data (migration or fixture? )

转载 作者:数据小太阳 更新时间:2023-10-29 08:02:07 24 4
gpt4 key购买 nike

我需要用特定表中的数据填充我的生产数据库应用程序。这是在任何人接触应用程序之前。在开发模式中也需要此数据,因为它需要进行测试。 fixture 通常是测试数据的方式,但是 Ruby on Rails 在创建数据库时也将此数据发送到实时数据库的“最佳实践”是什么?

最终,我想这是一个由两部分组成的问题。

1) 将测试数据加载到我的数据库中以进行开发的最佳方式是什么,大约有 1,000 个项目。是通过迁移还是通过固定装置?这个答案与下面的问题不同的原因是,在开发过程中,我想随机生成表格中的某些字段。在生产中,这些字段都将以相同的值 0 开头。

2) 使用我需要的实时数据引导生产数据库的最佳方法是什么,这也是通过迁移或固定装置吗?

我认为答案是按照此处所述播种:http://lptf.blogspot.com/2009/09/seed-data-in-rails-234.html但我需要一种为开发播种和为生产播种的方法。另外,如果播种可用,为什么还要费心使用 Fixtures 呢?一粒种子什么时候使用固定装置?

最佳答案

通常,固定装置用于为您的测试提供数据,而不是将数据填充到您的数据库中。您可以 - 有些人拥有,例如您指向的链接 - 为此目的使用固定装置。

fixture 没问题,但使用 Ruby 给我们带来了一些优势:例如,能够读取 CSV 文件并根据该数据集填充记录。或者,如果您确实需要,也可以从 YAML fixture 文件中读取:由于您是从一种编程语言开始的,因此您的选择范围很广。

我目前的团队尝试使用 db/seed.rb,并检查 RAILS_ENV 以仅在特定位置加载特定数据。

关于 db:seed 的恼人之处在于它注定是一次性的:所以如果您在开发过程中有额外的项目要添加 - 或者当您的应用程序已经投入生产时 - ...那么,您需要考虑到这一点(ActiveRecord 的 find_or_create_by...() 方法可能是你的 friend )。

我们尝试了 Bootstrapper插件,它在 RAILS_ENV 检查上放置了一个很好的 DSL,并让你只运行你想要的环境。这很不错。

我们的需求实际上不止于此 - 我们发现我们需要为我们的种子数据迁移数据库样式。现在我们将普通的 Ruby 脚本放入一个文件夹 (db/bootstrapdata/) 并使用 Arild Shirazi 的 required 运行这些脚本。 gem 加载(并因此运行)此目录中的脚本。

现在这只为您提供了部分数据库样式迁移。从这一点到创建这些数据迁移只能运行一次的东西(比如数据库迁移)并不难。

您的需求可能止步于 bootstrapper:我们有非常独特的需求(在我们只了解一半规范的情况下开发系统,大型 Rails 团队,从上一代软件迁移大数据。您的需求可能更简单)。

关于ruby-on-rails - ruby rails 2.3.5 : Populating my prod and devel database with data (migration or fixture? ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2777899/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com