You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

extract_fixtures.rake 841B

12345678910111213141516171819202122
  1. desc 'Create YAML test fixtures from data in an existing database.
  2. Defaults to development database. Set RAILS_ENV to override.'
  3. task :extract_fixtures => :environment do
  4. sql = "SELECT * FROM %s"
  5. skip_tables = ["schema_info"]
  6. ActiveRecord::Base.establish_connection
  7. (ActiveRecord::Base.connection.tables - skip_tables).each do |table_name|
  8. i = "000"
  9. File.open("#{Rails.root}/#{table_name}.yml", 'w' ) do |file|
  10. data = ActiveRecord::Base.connection.select_all(sql % table_name)
  11. file.write data.inject({}) { |hash, record|
  12. # cast extracted values
  13. ActiveRecord::Base.connection.columns(table_name).each { |col|
  14. record[col.name] = col.type_cast(record[col.name]) if record[col.name]
  15. }
  16. hash["#{table_name}_#{i.succ!}"] = record
  17. hash
  18. }.to_yaml
  19. end
  20. end
  21. end