2014-10-01 52 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