我正在创建一个rake任务来将csv文件数据导入我的数据库(MySQL)。这是我做的,但它不起作用
require 'csv'
namespace :tech do
desc "Import tech from csv file"
task temp: :environment do
file = "tech.csv"
CSV.foreach(file, :headers => true) do |row|
Temp.create ({
:current => row[1],
:today => row[2],
:week=> row[3],
:month => row[4]
})
end
端 端
但是当我运行rake tech:temp
时会抛出此错误
Don't know how to build task 'tech:temp'
y/gems/2.0.0/gems/rake-10.3.2/lib/rake/task_manager.rb:62:in `[]'
/p353/lib/ruby/gems/2.0.0/gems/rake-10.3.2/lib/rake/application.rb:149:in `invoke_task'
lib/ruby/gems/2.0.0/gems/rake-10.3.2/lib/rake/application.rb:106:in `block (2 levels) in top_level'
/lib/ruby/gems/2.0.0/gems/rake-10.3.2/lib/rake/application.rb:106:in `each'
/lib/ruby/gems/2.0.0/gems/rake-10.3.2/lib/rake/application.rb:106:in `block in top_level'
/lib/ruby/gems/2.0.0/gems/rake-10.3.2/lib/rake/application.rb:115:in `run_with_threads'
/lib/ruby/gems/2.0.0/gems/rake-10.3.2/lib/rake/application.rb:100:in `top_level'
lib/ruby/gems/2.0.0/gems/rake-10.3.2/lib/rake/application.rb:78:in `block in run'
/lib/ruby/gems/2.0.0/gems/rake-10.3.2/lib/rake/application.rb:176:in ` standard_exception_handling'
lib/rake/application.rb:75:in `run'
/ruby/gems/2.0.0/gems/rake-10.3.2/bin/rake:33:in `<top (required)>'
bin/rake:23:in `load'
/bin/rake:23:in `<main>'
迁移后我已经拥有Temp模型和数据库中的各个表
答案 0 :(得分:3)
在编写rake任务以填充数据库中的数据时,我遇到了同样的问题。 在我的情况下,错误是相同的,只是以错误的方式运行rake任务。
我猜你也在做同样的事情,根据我猜错误
你正在运行rake tech:temp
,其中任务是临时的,而命名空间是技术,这是错误的你应该传递给其他人,首先你需要给任务名称然后命名空间。
所以正确的命令是
rake temp:tech
希望这会奏效。我知道这很愚蠢