【问题标题】:Running Script Module on Ruby on Rails在 Ruby on Rails 中运行脚本模块
【发布时间】:2014-11-26 02:11:16
【问题描述】:

目前我需要将 .CSV 文件导入我的应用程序。

我发现这段代码(由以前的开发人员制作)将用作导入器。但我不确定如何运行这个脚本。 /tasks 有什么不同吗?因为当我运行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

【问题讨论】:

    标签: ruby-on-rails ruby csv import


    【解决方案1】:

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

    使用以下语法在 lib/tasks/ 中创建一个 rake 文件 .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
    

    然后你可以用 "rake your_task_namespace:your_task_name" 来调用它,如果它不是 dev,则带有可选的 RAILS_ENV=。

    我在工作,无法指定更多示例。

    希望对你有帮助。

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

    编辑:

    如果不能创建rake任务,可以这样创建脚本文件:

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

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

    【讨论】:

    • 胡安您好,感谢您的回答。我知道 rake 任务会更容易,但由于这是以前开发人员的旧代码,我无法更改或将任何代码添加到应用程序中。我需要使用那个旧代码。
    • 好的,所以将它添加到文件的第一行:#!/usr/bin/env ruby​​ 并授予执行权限并将其作为脚本运行
    • 胡安您好,再次感谢您的回复。那么这些行会放在哪个文件上呢?
    • 将其添加到您发布的代码所在的文件中,或复制+粘贴到新文件中。记得调用 chmod 777
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-17
    相关资源
    最近更新 更多