在 Rake 任务中找不到数据文件
Could not find data file in a Rake task
我想使用临时 rake 文件为生产环境播种一些数据。
.
├── assets
└── tasks
└── temporary
├── languages.csv
└── languages.rake
运行 rake 任务产生以下错误,No such file or directory
。
Language Database Initialization Completed
rake aborted!
Errno::ENOENT: No such file or directory @ rb_sysopen - ./languages.csv
/home/li-xinyang/Desktop/XX_OpenNB/lib/tasks/temporary/languages.rake:7:in `read'
下面的代码片段是我的 rake 任务,
require 'csv'
namespace :languages do
desc 'Seed initial languages data with language & code'
task init_data: :environment do
ActiveRecord::Base.transaction do
csv_str = File.read('./languages.csv')
csv = CSV.new(csv_str).to_a
csv.each do |lan_set|
lan_code = lan_set[0]
lan_str = lan_set[1]
Language.new(language: lan_str, code: lan_code).save
print '.'
end
end
puts 'Language Database Initialization Completed'
end
end
文件路径不要使用相对路径
csv_path = File.expand_path('languages.csv', File.dirname(__FILE__))
csv_str = File.read(csv_path)
你可以使用这样的东西:
csv_str = File.read("#{Rails.root}/app/tasks/temporary/languages.csv")
我想使用临时 rake 文件为生产环境播种一些数据。
.
├── assets
└── tasks
└── temporary
├── languages.csv
└── languages.rake
运行 rake 任务产生以下错误,No such file or directory
。
Language Database Initialization Completed
rake aborted!
Errno::ENOENT: No such file or directory @ rb_sysopen - ./languages.csv
/home/li-xinyang/Desktop/XX_OpenNB/lib/tasks/temporary/languages.rake:7:in `read'
下面的代码片段是我的 rake 任务,
require 'csv'
namespace :languages do
desc 'Seed initial languages data with language & code'
task init_data: :environment do
ActiveRecord::Base.transaction do
csv_str = File.read('./languages.csv')
csv = CSV.new(csv_str).to_a
csv.each do |lan_set|
lan_code = lan_set[0]
lan_str = lan_set[1]
Language.new(language: lan_str, code: lan_code).save
print '.'
end
end
puts 'Language Database Initialization Completed'
end
end
文件路径不要使用相对路径
csv_path = File.expand_path('languages.csv', File.dirname(__FILE__))
csv_str = File.read(csv_path)
你可以使用这样的东西:
csv_str = File.read("#{Rails.root}/app/tasks/temporary/languages.csv")