从rake任务调用数据库脚本

时间:2013-04-26 07:08:11

标签: ruby-on-rails ruby

我有一个Ruby on Rails应用程序(ruby 1.8.7; rails 2.3.18)。我有一个自定义的 rake任务(基本上是一个ruby程序),它比较两个数组,然后将它们的差异存储在第三个数组中(arr3 = arr1 - arr2)。在应用程序中有一个用户模型。我有一个数据库脚本,可以从模型/ db中挂起(删除)用户。所以我想在创建arr3之后从rake任务中调用这个数据库脚本。我想运行此脚本,直到arr3中的所有元素都被删除。这些数组给出了两个用户列表之间的区别。

任何人都可以指导我吗?如何从rake任务调用数据库脚本?任何事情都会有很大的帮助。

rake文件如下:

namespace :db do
arr1 = Array.new 
arr2 = Array.new 
arr3 = Array.new

desc "load data from csv"
task :load_is_data do
  require 'fastercsv'
  CSV.foreach("C:/Sites/rails_project/demo_app/list1.csv") do |row|
arr1 << row[0]
  end

 CSV.foreach("C:/Sites/rails_project/demo_app/list2.csv") do |row|
arr2 << row[0]
  end

  arr3 = arr1-arr2 
  puts "Inactive: #{arr3}"

 #CODE TO BE ADDED, TO CALL DATABASE-SCRIPT

 end
end

谢谢, Bhargav

1 个答案:

答案 0 :(得分:0)

你可以使用任何以下宝石。

gem "populator", "~> 1.0.0"
gem 'faker'
gem "random_data", "~> 1.6.0"

代码将是这样的。

admin = AdminUser.create :email => 'xxxxxx@gmail.com', :password => 'xxxx1234', :password_confirmation => 'xxxx1234', :role => 'SuperAdmin', :name => 'SuperAdmin'
  puts 'SuperAdmin created: ' << admin.email



      10.times do |index|
        User.create! :fname => Random.firstname,
          :lname => Random.lastname,
          :email => Random.email,
          :password => 'dcs1234',
          :password_confirmation => 'dcs1234'
      end