ref: master
script/sample-profiles
#!/usr/bin/env ruby require_relative '../config/environment' require_relative '../lib/sample_data' include SampleData categories = $environment.categories places = [ { :country=>'BR', :state=>'Bahia', :city=>'Salvador', :lat=>-12.94032, :lng=>-38.58398 }, { :country=>'BR', :state=>'Bahia', :city=>'Feira de Santana', :lat=>-12.25547, :lng=>-38.95430 }, { :country=>'BR', :state=>'São Paulo', :city=>'São Paulo', :lat=>-23.54894, :lng=>-46.63881 }, { :country=>'BR', :state=>'Rio de Janeiro', :city=>'Petrópolis', :lat=>-22.50462, :lng=>-43.18232 }, { :country=>'AR', :state=>'A.C.', :city=>'Buenos Aires', :lat=>-34.61088, :lng=>-58.39782 }, { :country=>'AR', :state=>'Buenos Aires', :city=>'Mar del Plata', :lat=>-37.98317, :lng=>-57.59513 }, { :country=>'MX', :state=>'Guerrero', :city=>'Acapulco', :lat=>16.86369, :lng=>-99.88151 }, { :country=>'US', :state=>'California', :city=>'Los Angeles', :lat=>34.02307, :lng=>-118.24310 }, { :country=>'US', :state=>'Florida', :city=>'Jacksonville', :lat=>30.33217, :lng=>-81.65566 }, { :country=>'IT', :city=>'Roma', :lat=>41.89512, :lng=>12.48184 }, { :country=>'IN', :city=>'Mumbai', :lat=>19.01798, :lng=>72.85583 }, { :country=>'CN', :city=>'Shanghai', :lat=>31.23041, :lng=>121.47308 }, { :country=>'JP', :city=>'Tokyo', :lat=>35.68964, :lng=>139.69116 }, { :country=>'FR', :city=>'Paris', :lat=>48.85658, :lng=>2.351074 }, { :country=>'BW', :city=>'Sowa', :lat=>-20.56891, :lng=>26.22367 } ] people = [] NAMES = %w[ José João Antonio Paulo Maria Joana Paula Angela ] SURNAMES = %w[ Silva Santos Abreu Oliveira Machado Bonfim ] print "Creating users: " for name in NAMES for surname in SURNAMES full_name = [name, surname].join(' ') user = User.new({ :login => full_name.to_slug, :email => full_name.to_slug + '@localhost.localdomain', :password => 'test', :password_confirmation => 'test', :environment => $environment, }) save user do user.person.name = full_name place = places[rand(places.length)] user.person.data[:country] = place[:country] user.person.state = place[:state] user.person.city = place[:city] user.person.lat = place[:lat] + (rand/100)-0.005 user.person.lng = place[:lng] + (rand/100)-0.005 user.person.save! if categories.present? 2.times do category = categories.sample user.person.add_category category unless category.people.include?(user.person) end end end end end ze = User.new({ :login => "ze", :email => 'root@localhost.localdomain', :password => 'test', :password_confirmation => 'test', :environment => $environment, }) save ze do $environment.add_admin(ze.person) end admin = User.new({ :login => "adminuser", :email => 'adminuser@localhost.localdomain', :password => 'admin', :password_confirmation => 'admin', :environment => $environment, }) save admin do $environment.add_admin(admin.person) end guest = User.new({ :login => "guest", :email => 'guest@localhost.localdomain', :password => 'test', :password_confirmation => 'test', :environment => $environment, }) save guest done print "Activating users: " User.where("login NOT LIKE '%%_template'").each do |user| user.activate print '.' end done people = $environment.people.no_templates print "Creating some friendships: " rand(people.size * 3).times do from = people.sample to = people.sample if from != to && !from.friends.include?(to) task = AddFriend.new(:requestor => to, :target => from) save task do task.finish end end print '.' end done communities = [] VERBS = ['Save', 'I like', 'Use'] STUFF = ['Free Software', 'Organic food', 'the wales', 'the environment'] print "Creating communities: " for verb in VERBS for stuff in STUFF name = [verb, stuff].join(' ') community = Community.new(:name => name, :environment => $environment) if rand(2)==1 # not all communities must have a place place = places[rand(places.length)] community.data[:country] = place[:country] community.state = place[:state] community.city = place[:city] end save community do communities << community rand(10).times do person = people.sample community.add_member(person) unless community.members.include?(person) end if categories.present? 2.times do category = categories.sample community.add_category category unless category.communities.include?(community) end end end end end 5.times do community = communities.sample community.add_member(guest.person) unless community.members.include?(guest.person) community.add_admin(guest.person) unless community.admins.include?(guest.person) end done