みなさんエクセル好きですよね。。
CSVにして、ファイルを可視化したいって要望は多いんです。
そこで今回は、railsのrakeタスクの機能を使ってデータをcsvにしてくれる機能を実装していこうと思います。
Rakeタスクファイルを生成
rails g task create_csv
実行するのに必要なタスクファイルを生成します。
最初の状態はこれ
lib/tasks/create_csv.rake
namespace :create_csv do
end
タスク実行処理
lib/tasks/create_csv.rake
require 'csv'
namespace :create_csv do
desc "実行処理の説明"
#モデルにアクセスする場合は :enviroment を指定します
task :export => :environment do
#csvを生成
csv_export = CSV.generate do |csv|
csv << Model.column_names
csv <<
Model.all.map do |model|
model
end
end
# 現在時間でダウンロードできるようにする
current_time = DateTime.now.to_s
# ファイル作成
File.open("./" + current_time + "_user.csv", 'w') do |file|
file.write(csv_export)
end
# ダウンロード
stat = File::stat("./" + current_time + "_user.csv")
send_file("./" + current_time + "_user.csv", :filename => "./" + current_time + "_user.csv", :length => stat.size)
end
ターミナルにて実行確認
rake create_csv:export
ファイルが生成していることを確認
これでCSVファイルを生成できました!簡単ですね!
データを可視化してみたい時はぜひ!!