# How to do populate task? I'm trying something like

**URL:** <https://www.ruby-forum.com/t/how-to-do-populate-task-im-trying-something-like/146068>\
**Category:** Rails\
**Created:** [August 17, 2008, 6:31am UTC](https://www.ruby-forum.com/t/how-to-do-populate-task-im-trying-something-like/146068 "2008-08-17T06:31:03Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![lz-coelho](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/8c91f0/32.png) [@lz-coelho](https://www.ruby-forum.com/u/lz-coelho)\
**Post date:** [August 17, 2008, 6:31am UTC](https://www.ruby-forum.com/t/how-to-do-populate-task-im-trying-something-like/146068/1 "2008-08-17T06:31:03Z")

</div>

I’m trying to write a taks to populate my rails project with Users.

I wrote a simple script to generate and construct a yaml file, like it:

#!/usr/bin/ruby

require ‘digest/sha1’

letras = [‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘g’, ‘h’, ‘i’, ‘j’, ‘l’, ‘m’,  
‘n’,  
‘o’, ‘p’, ‘q’, ‘r’, ‘s’, ‘t’, ‘u’, ‘v’, ‘x’, ‘z’]

def sort  
return Kernel.rand(23)  
end

def password  
pass = sort.to\_s + sort.to\_s + sort.to\_s  
return Digest::SHA1.hexdigest(pass)  
end

file = File.new(‘populate.yml’, ‘w’)

10.times do |i|  
name = letras[sort].upcase + letras[sort] + letras[sort] +  
letras[sort]  
file.puts name + ‘:’  
file.puts ’ ’ + ‘id:’ + ’ ’ + i.to\_s  
file.puts ’ ’ + ‘name:’ + ’ ’ + name  
file.puts ’ ’ + ‘email:’ + ’ ’ + name.downcase + ‘@’ + ‘[dom.com](http://dom.com)’  
file.puts ’ ’ + ‘hashed\_password:’ + ’ ’ + password  
file.puts ’ ’ + ‘nickname:’ + ’ ’ + name  
end

The ouput:

Hhpd:  
id: 0  
name: Hhpd  
email: removed\_email\_address@domain.invalid  
hashed\_password: bdd9ab67b021794754b0bf856a9bc728c1a3e968  
nickname: Hhpd  
Jmzs:  
id: 1  
name: Jmzs  
email: removed\_email\_address@domain.invalid  
hashed\_password: 70bc993e97958abc9f223c94e94742065d15efd8  
nickname: Jmzs  
Dpqv:  
id: 2  
name: Dpqv  
email: removed\_email\_address@domain.invalid  
hashed\_password: e816958259e39339ddc56994e959aa56ef874f92  
nickname: Dpqv

That’s ok. But now how can i get the yaml file and insert it on database  
using ActiveRecord? I tried to do:

require ‘active\_record’  
require ‘active\_record/fixtures’

namespace :db do  
DATA\_DIRECTORY = “#{RAILS\_ROOT}/lib/tasks/populate”  
namespace :populate do  
desc ‘ghost users’  
task :load =\> :environment do |t|  
class\_name = ‘User’  
table\_name = ‘Users’  
fixture = Fixtures.new(ActiveRecord::Base.connection,  
table\_name, class\_name,  
File.join(DATA\_DIRECTORY, table\_name.to\_s))  
fixture.insert\_fixtures  
puts “that’s right”  
end  
end  
end

What’s wrong? I’m seeing the development.log and none is INSERTED in  
database.

Thank you very much to ready this question!

–  
Regards,

Luiz Vitor Martinez C.  
cel.: (11) 8187-8662  
blog: [rubz.org](http://rubz.org)  
engineer student at maua.br

“Posso nunca chegar a ser o melhor engenheiro do mundo, mas tenha  
certeza de  
que eu vou lutar com todas as minhas forÃ§as para ser o melhor engenheiro  
que  
eu puder ser”

---

<div class="post-metadata">

**Author:** ![lz-coelho](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/8c91f0/32.png) [@lz-coelho](https://www.ruby-forum.com/u/lz-coelho)\
**Post date:** [August 17, 2008, 9:20am UTC](https://www.ruby-forum.com/t/how-to-do-populate-task-im-trying-something-like/146068/2 "2008-08-17T09:20:36Z")

</div>

letras = (“a”…“z”).to\_a is a shorter way to write your code.

Put the fixtures into test/fixtures and load them with rake  
db:fixtures:load

---

<div class="post-metadata">

**Author:** ![lz-coelho](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/8c91f0/32.png) [@lz-coelho](https://www.ruby-forum.com/u/lz-coelho)\
**Post date:** [August 17, 2008, 10:09am UTC](https://www.ruby-forum.com/t/how-to-do-populate-task-im-trying-something-like/146068/3 "2008-08-17T10:09:07Z")

</div>

Since your default users are just for testing, put them into test/  
fixtures and do rake db:fixtures:load

If you want to write the rake task just for the fuck of it, i did it  
this way

namespace :db do  
namespace :fixtures do  
desc “load default fixtures from db/defaults/_"  
task :defaults =\> :environment do  
require “active\_record/fixtures”  
ActiveRecord::Base.establish\_connection(RAILS\_ENV.to\_sym)  
puts “Fixtures”  
Dir.glob(File.join(RAILS\_ROOT, ‘db’, ‘defaults’, '_.{yml,  
csv}')).each do |fixture\_file|  
Fixtures.create\_fixtures(‘db/defaults’,  
File.basename(fixture\_file, '._'))  
puts "_ #{fixture\_file}”  
end  
puts “succesfully loaded”  
end  
end  
end

code takes everything from db/defaults ending in yml and loads it into  
current environment. Its almost completely the same as original rake  
db:fixtures:load task.

On Aug 17, 6:30 am, “Luiz Vitor Martinez C.” [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)
