2014-10-01 51 views
0

当前我需要将.CSV文件导入到我的应用程序中。在Ruby on Rails上运行脚本模块

我发现此代码(由以前的开发人员提供)将用作导入程序。但我不知道如何运行这个脚本。它与/任务不同吗?因为当我运行rake -T它不显示。

require 'csv' 

module Migrators 
    module Groups 
    class << self 

     def import! 
     Post.skip_callback :create, :before, :set_last_action_at 
     Post.skip_callback :create, :after, :create_memberhip_of_owner 

     CSV.foreach(Rails.root.to_s + '/db/lagacy/groups.csv', :headers => true) do |row| 
      group = Group.new(row.to_hash) 
      group.save(:validate => false) 
     end 
     # Update last_action_at to created_at 
     Group.where('last_action_at IS NULL').update_all('last_action_at = created_at') 
     Group.find_by_sql("SELECT setval('groups_id_seq', (SELECT MAX(id) FROM groups))") 

     Post.set_callback :create, :before, :set_last_action_at 
     Post.set_callback :create, :after, :create_memberhip_of_owner 
     end 

    end 

    end 
end 

回答

0

您可以为此创建一个rake任务。

创建的lib /任务耙文件.rake /语法如下:

namespace :yourtask_namespace do 
    desc "task description" (it is optional but recommended, this way if you do "rake -T yourtask" it will show your task) 
    task :yourtask_name => :environment do 
    Migrators::Groups.import! 
    end 
end 

然后你就可以用“回扣your_task_namespace:your_task_name”把它与可选RAILS_ENV =如果没有dev的。

我在工作,不能指定更多样本。

希望它有帮助。

这里是耙任务的示例:rake task

编辑:

如果您不能创建rake任务,你可以创建一个脚本文件是这样的:

添加到第一线的文件#!/usr/bin/env ruby

在文件的最后一行..调用你想要执行的方法并运行脚本。

+0

你好胡安,谢谢你的回答。我明白,rake任务会更容易,但由于这是以前开发人员的旧代码,因此我无法更改或向应用程序添加任何代码。我需要使用旧的代码。 – Irwan 2014-10-01 09:32:37

+0

好吧,所以把它添加到文件的第一行:#!/ usr/bin/env ruby​​并赋予执行权限并将其作为脚本运行 – 2014-10-01 09:34:27

+0

Hello Juan,再次感谢您的回复。所以这些行会放在哪个文件上? – Irwan 2014-10-01 10:12:12