【问题标题】:Calling a database script from a rake task从 rake 任务调用数据库脚本
【发布时间】:2013-04-26 07:08:10
【问题描述】:

我有一个 Ruby on Rails 应用程序(ruby 1.8.7;rails 2.3.18)。我有一个自定义的 rake 任务(基本上是一个 ruby​​ 程序),它比较两个数组,然后将它们的差异存储在第三个数组中(arr3 = arr1 - arr2)。在应用程序中有一个用户模型。我有一个数据库脚本,可以从模型/数据库中暂停(删除)用户。所以我想在创建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

谢谢, 巴尔加夫

【问题讨论】:

  • 也许你可以看看这个类似的问题:stackoverflow.com/questions/16074630/…
  • 我不想从数据库中删除整个列。只想使用 db 脚本删除一些条目。
  • 为什么需要调用数据库脚本?你没有使用 ActiveRecord 吗?

标签: ruby-on-rails ruby


【解决方案1】:

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

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

【讨论】:

  • 嗨,普拉文,对不起。我无法理解你的解决方案。我的意思是这些宝石会做什么?还有为什么我需要创建超级用户或超级管理员?是否有线程/链接可以让我更好地理解您的概念?我基本上想知道如何从 rake 任务中调用数据库脚本(现有的),以便它可以遍历数组的元素并执行所需的操作。谢谢
猜你喜欢
  • 2013-02-18
  • 1970-01-01
  • 2015-04-15
  • 1970-01-01
  • 1970-01-01
  • 2013-03-27
  • 1970-01-01
  • 2016-11-17
  • 2016-01-05
相关资源
最近更新 更多