2010-06-15 6 views
1

J'ai une tâche rake loaddata.rake.télécharger le fichier csv avec le travail retardé

require File.join(File.dirname(__FILE__), 'load_test_data.rb') 
namespace :test do 
    desc "Insert test data into the database" 
    task(:loadtest => :environment) do 
    puts "environment = #{RAILS_ENV}" 
    puts "load_test_data   "; load_test_data 

    puts "DONE!" 
    end 
end 

j'ai une autre load_test_data.rb fichier là, j'ai des fonctions de lecture des données de fichiers csv et stocker dans la base de données. Et j'appelle ce fichier de ma tâche rake.

This is my load_test_data.rb 
require "faster_csv" 

def load_test_data 
    puts "test: Balance" 
    directory = "test/data" 
    name = "balances.csv" 
    lines = get_lines_from_csv(directory,name,"snapshot_errors") 
    unless lines.nil? 
    row_number = 1 
    lines.each do |row| 
     unless row.header_row? 
     begin 
      attributes = row.to_hash 
      attributes[:balance_name_id] = BalanceName.find(:first, :conditions =>   ["name = ?", attributes[:balance_name]]).id 
      attributes.delete(:balance_name) 
      Balance.create! attributes 
     rescue 
      store_error_in_table(row.fields.to_csv,name,row_number,"snapshot_errors") 
     end 
     row_number += 1 
     end 
    end 
    end 
end 

tâche Rake fonctionne bien avec mon code ..

Maintenant, je veux appeler cette fonction de ma tâche Rake avec travail retardé .. Y at-il de toute façon je peux le gérer ??

Répondre

1

Vous pouvez l'appeler par commande système

system 'rake test:loadtest'

Questions connexes