在Rails应用程序中执行Ruby脚本

时间:2009-08-18 15:21:33

标签: ruby-on-rails ruby

我可以在控制台中为我的Rails应用程序运行以下命令,并将CSV文件导入我的数据库。

require 'csv'

# row will be an array with the fields in the order they appear in the file
CSV.open('myfile.csv', 'r') do |row|
  # assuming the fields in the CSV file are in order npa, nxxFrom, nxxTo, trnk
  # create and save a Trunk model for each row
  Trunk.create!(:npa => row[0], :nxxFrom => row[1], :nxxTo => row[2], :trnk => row[3])
end

但是我想通过为它创建一个脚本来促进这个过程。问题是我不知道如何编写特定于应用程序的脚本。为了运行上述命令,我需要通过以下命令在应用程序文件夹中启动控制台:

ruby script/console

因此,只需将命令复制/粘贴到.rb文件中即可执行。

任何帮助将永远受到赞赏:)

3 个答案:

答案 0 :(得分:5)

为什么不使用script/runner "<code or filename here>?运行脚本? runner脚本在给定的应用程序上下文中执行脚本而没有控制台。

答案 1 :(得分:2)

您可以将其作为从环境继承的rake任务。将其放入 lib / tasks / your_task.rake

task :your_task => :environment do
  # code goes here
end

然后使用rake your_task运行它。它可以被称为你想要的任何东西。

答案 2 :(得分:1)

您需要在脚本中调用rails环境。

尝试在您的文件顶部添加此内容:

RAILS_ENV = ARGV[0] || "production"
require File.join(File.dirname(__FILE__), *%w[.. config environment])
# assumes script is placed one level below the root of the application
# second parameter is the relative path to the environment directory of your rails app