`
xu_wccq
  • 浏览: 130889 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Create YAML test fixtures from database

    博客分类:
  • ruby
阅读更多
转于
http://snippets.dzone.com/tag/yaml

运行:
cd #{RAILS_ROOT}/lib/tasks/
rake db:fixtures:dump_all
or
rake db:fixtures:dump_references


namespace :db do
  namespace :fixtures do

    desc 'Create YAML test fixtures from data in an existing database.
Defaults to development database. Set RAILS_ENV to override.'
    task :dump_all => :environment do
      sql = "SELECT * FROM %s"
      skip_tables = ["schema_info"]
      ActiveRecord::Base.establish_connection(:development)
      (ActiveRecord::Base.connection.tables - skip_tables).each do |table_name|
        i = "000"
        File.open("#{RAILS_ROOT}/test/fixtures/#{table_name}.yml", 'w') do |file|
          data = ActiveRecord::Base.connection.select_all(sql % table_name)
          file.write data.inject({}) { |hash, record|
            hash["#{table_name}_#{i.succ!}"] = record
            hash
          }.to_yaml
        end
      end
    end
  end
  
  namespace :fixtures do
    desc 'Create YAML test fixtures for references. Defaults to development database. 
    Set RAILS_ENV to override.'
    task :dump_references => :environment do
      sql = "SELECT * FROM %s"
      dump_tables = ["areas","countries"]
      ActiveRecord::Base.establish_connection(:development)
      dump_tables.each do |table_name|
        i = "000"
        file_name = "#{RAILS_ROOT}/test/fixtures/#{table_name}.yml"
        p "Fixture save for table #{table_name} to #{file_name}"
        File.open(file_name, 'w') do |file|
          data = ActiveRecord::Base.connection.select_all(sql % table_name)
          file.write data.inject({}) { |hash, record|
            hash["#{table_name}_#{i.succ!}"] = record
            hash
          }.to_yaml
        end
      end
    end
  end
end 


权限管理用下面方法直接把数据库中的数据导出。test 时非常方便。要不那么多权限输死人嘞。
desc 'Create YAML test fixtures from data in an existing database.  
Defaults to development database.  Set RAILS_ENV to override.'


run:
cd #{RAILS_ROOT}/lib/tasks/
rake extract_fixtures

task :extract_fixtures => :environment do
  sql  = "SELECT * FROM %s"
  skip_tables = ["schema_info"]
  ActiveRecord::Base.establish_connection
  (ActiveRecord::Base.connection.tables - skip_tables).each do |table_name|
    i = "000"
    File.open("#{RAILS_ROOT}/test/fixtures/#{table_name}.yml", 'w') do |file|
      data = ActiveRecord::Base.connection.select_all(sql % table_name)
      file.write data.inject({}) { |hash, record|
        hash["#{table_name}_#{i.succ!}"] = record
        hash
      }.to_yaml
    end
  end
end
分享到:
评论

相关推荐

    Python库 | Py_YAML_Fixtures-0.4.0-py3-none-any.whl

    资源分类:Python库 所属语言:Python 资源全名:Py_YAML_Fixtures-0.4.0-py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    sqla_yaml_fixtures:加载用于SQLAlchemy的YAML数据固定装置

    sqla_yaml_fixtures 加载用于SQLAlchemy的YAML数据固定装置 该软件包允许您在YAML中定义一些数据并将其加载到数据库中。 yaml数据应对应于SQLAlchemy声明性映射器。 例子: - User : - __key__ : joey ...

    yaml_test.rar

    标题 "yaml_test.rar" 涉及到的关键技术是C#编程语言以及yaml(YAML Ain't Markup Language)文件的处理。yaml是一种简洁且人类可读的数据序列化格式,常用于配置文件、数据交换和存储等场景。在描述中提到,我们...

    yaml-test-suite:适用于YAML的全面,独立于语言的测试套件

    `yaml-test-suite` 是一个专为YAML设计的全面、独立于语言的测试套件,旨在确保不同实现之间的兼容性和一致性。这个测试套件对于开发者来说尤其重要,因为它们可以帮助验证他们的YAML解析器或生成器是否符合规范,...

    c++版yaml库yaml-cpp

    **C++版YAML库yaml-cpp** yaml-cpp是一个用C++编写的开源库,专为解析、生成YAML格式的数据而设计。YAML(YAML Ain't Markup Language)是一种人类可读的数据序列化语言,常用于配置文件、数据交换和存储等领域。...

    api_test.rar_apitest yaml_写apitest_测试

    在这个场景中,我们有一个名为"api_test.rar"的压缩包文件,它包含了关于API测试的相关资源,特别是与YAML配置文件相关的测试脚本。 首先,让我们了解什么是YAML。YAML是一种易读易写的标记语言,常用于配置文件,...

    yaml配置文件解析-yaml

    name: "test_yaml" result: "success" ``` - **列表**:使用破折号`-`表示列表项,项之间用空格分隔。例如: ```yaml - item1 - item2 ``` ### 2. YAML字典和列表的进阶操作 - **字典嵌套**:可以创建...

    yaml文件 yaml 入门

    yaml文件 yaml 入门yaml 入门yaml 入门yaml 入门yaml 入门yaml 入门yaml 入门yaml 入门yaml 入门yaml 入门yaml 入门yaml 入门yaml 入门yaml 入门yaml 入门yaml 入门yaml 入门yaml 入门yaml 入门yaml 入门yaml 入门...

    test-merge-yaml

    在这个名为"test-merge-yaml"的主题中,我们主要关注如何合并多个YAML文件。在给定的压缩包里,有三个YAML文件:open.yaml、color.yaml和book.yaml,它们各自可能包含独立的配置信息。下面将详细介绍如何管理和合并...

    Laravel开发-laravel-fixtures

    YAML文件通常存储在`database/factories`目录下,每个文件代表一个模型的多个实例。例如,`UserFactory.php`可能包含多个用户实例。 ```yaml # database/factories/UserFactory.yaml users: - name: John Doe ...

    yaml-cpp-yaml-cpp-0.5.3.tar.gz_yaml-cpp_yaml-cpp0.5

    在yaml-cpp-0.5.3版本中,除了这两个主要组件外,还有一些辅助类和函数,如`Yaml::Parser`用于解析YAML输入,`Yaml::Exception`处理解析或序列化过程中的错误,以及`Yaml::parse`和`Yaml::dump`两个方便的全局函数,...

    yaml-cpp-yaml-cpp-0.6.0.tar.gz

    《yaml-cpp库详解及其在运维中的应用》 yaml-cpp是C++语言的一个开源库,主要用于解析和生成YAML(YAML Ain't Markup Language)格式的数据。YAML是一种轻量级的数据序列化语言,广泛应用于配置文件、数据交换、...

    MatLab的YAML库文件

    在MATLAB中,YAML(YAML Ain't Markup Language)是一种流行的数据序列化格式,它被广泛用于存储配置文件、数据传输以及版本控制系统中的元数据。YAML库为MATLAB提供了一个接口,允许用户轻松地读取和写入YAML格式的...

    yaml-cpp-yaml-cpp-0.6.2.zip

    《深入理解YAML-CPP库:解析YAML文件的CPP实现》 YAML,全称“YAML Ain't Markup Language”(发音同“camel”,意为“不是标记语言”),是一种简洁、直观的数据序列化语言。它常用于配置文件、数据交换格式等领域...

    yaml配置文件demo

    在IT行业中,配置文件是管理和控制程序运行状态的关键元素,而YAML(Yet Another Markup Language)因其简洁明了的语法,常被用作配置文件的首选格式。本篇将深入探讨YAML配置文件的解析与使用,特别是如何在Python...

    Laravel开发-yaml

    然而,`Laravel开发-yaml`是一个扩展包,它允许开发者使用YAML(Yet Another Markup Language)格式来编写配置文件,提供了一种更为简洁、易读的替代方式。 YAML是一种轻量级的数据序列化语言,常用于配置文件和...

    ingress的yaml文件

    YAML(YAML Ain't Markup Language)是一种数据序列化格式,常用于Kubernetes资源对象的配置文件,包括Ingress。下面我们将深入探讨Ingress的YAML文件及其相关知识点。 1. **Ingress资源对象**: - Ingress是...

    yaml-cpp.tar.gz

    《yaml-cpp库详解与应用》 yaml-cpp是一个开源的C++库,专门用于解析和生成YAML(Yet Another Markup Language)格式的数据。YAML是一种简洁、直观的人类可读的数据序列化语言,常被用于配置文件、数据交换以及存储...

    Python使用pyyaml模块处理yaml数据

    pyyaml模块在python中用于处理yaml格式数据,主要使用yaml.safe_dump()、yaml.safe_load()函数将python值和yaml格式数据相互转换。当然也存在yaml.dump()、yaml.load()函数,同样能实现数据转换功能,只是官方不太...

    yaml-cpp-master_library_yaml_cpp_

    标题 "yaml-cpp-master_library_yaml_cpp_" 暗示我们关注的是一个名为 "yaml-cpp" 的开源库的master分支,这个库主要用于处理YAML(Yet Another Markup Language)格式的数据。YAML是一种常用的数据序列化语言,常在...

Global site tag (gtag.js) - Google Analytics