【问题标题】:ruby-on-rails: Seeding-data strategies (or loading test data into developer database)ruby-on-rails:播种数据策略(或将测试数据加载到开发人员数据库中)
【发布时间】:2010-03-05 19:12:35
【问题描述】:

我想经常清除并重新加载我的开发人员数据库(Ruby on rails)。

当然,我可以通过网页手动添加数据,但我想知道是否有人对这种类型的测试有任何策略。

(我已经进行了单元、功能和集成测试,仅供参考)

谢谢

【问题讨论】:

    标签: ruby-on-rails testing fixtures seeding


    【解决方案1】:

    db 目录中创建一个seed.yml 文件。为您要创建的每个模型添加一个 YAML 文档。该文档应包含哈希列表。每个哈希都应该包含模型属性。

      users:
          -   login: jake
              password: jake123
              password_confirmation: jake123
              first_name: Jake
              last_name: Driver
    
          -   login: Jane
              password: jane123
              password_confirmation: jane123
              first_name: Jane
              last_name: McCain
    
      categories:
    
      products:
    

    在你的 seed.rb 文件中

    seed_file = File.join(Rails.root, 'db', 'seed.yml')
    config = YAML::load_file(seed_file)
    User.transaction do 
      config.keys.each{ |key| key.classify.constantize.create(config[key]) }
    end
    

    我发现修改 YML 文件中的种子数据更容易。我构建的应用程序由不同的团队部署。他们也喜欢这种方法。

    为了清除数据,我在 lib\tasks 目录中有一个 rake 任务。我以app:flush 运行rake 任务。

    namespace :app do
      desc "Flush all the seed data "
      task :flush => :environment do
        config = YAML::load_file(File.join(Rails.root, 'db', 'seed.yml'))
        User.transaction do 
          config.keys.each{ |table| truncate_table(table)}
        end
      end
    end
    

    【讨论】:

      【解决方案2】:

      是时候看看“夹具”和“播种数据”了 ;-) 我不足以给你一个清晰的解释,但是谷歌搜索这两个键应该可以满足你的所有需求。

      看看这些:http://derekdevries.com/2009/04/13/rails-seed-data/
      http://lptf.blogspot.com/2009/09/seed-data-in-rails-234.html

      【讨论】:

        猜你喜欢
        • 2011-10-02
        • 2016-12-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-17
        • 1970-01-01
        • 2011-09-26
        相关资源
        最近更新 更多