【发布时间】:2011-12-18 23:42:28
【问题描述】:
我的seeds.rb 文件变得非常大。重构文件中数据的最佳方法是什么?
我可以把数据放到各种文件中,require它们在seeds.rb文件中吗?
【问题讨论】:
标签: ruby-on-rails ruby refactoring
我的seeds.rb 文件变得非常大。重构文件中数据的最佳方法是什么?
我可以把数据放到各种文件中,require它们在seeds.rb文件中吗?
【问题讨论】:
标签: ruby-on-rails ruby refactoring
我们将所有种子存储在文件夹db/seeds 和db/seeds.rb 中,我们编写以下内容:
Dir[File.join(Rails.root, 'db', 'seeds', '*.rb')].sort.each { |seed| load seed }
我们在加载文件之前按字母顺序对文件进行排序,因此我们可以确保文件按顺序处理(通过明智地选择文件名,例如 01_operators.rb, 02_companies.rb, 03_products.rb ... 之类的名称)。
希望这会有所帮助。
【讨论】:
YourEngineName::Engine.root 而不是 Rails.root
01 02 只是在重组时自找麻烦。将其命名为 0100 和 0200,如果您想在 1 和 2 之间移动 99,只需将其命名为 0150,而不必将 02 重命名为 98。如果您将数字间隔 X(在本例中为 100),并始终选择中间数字,则在需要重命名某些内容以获得新的一个。自从您最初发布此内容以来已经有几年了,希望您现在已经解决了。
由于您的 seeds.rb 文件是 Ruby,因此您可以在其中执行任何可以在 Ruby 中执行的操作。像 routes.rb 和 Gemfile 一样,如果需要,您可以发挥创意。
请确保您没有做任何如此疯狂的事情,以至于实际上需要进行一些调试。只要你保持你的行动清晰,就不应该有混乱。也就是说,不要使用在其他文件中定义的自定义帮助方法,这些方法可能会出现故障并且必须手动追踪。在做这样的事情时,最好坚持最简单的解决方案。
【讨论】: