いつもお世話になっております。
現在Railsでファイルのアップロードフォームを作成したところです。
Rails + Carrierwave + RDS + S3の構成で、フォームからファイルをアップロードしデータベースの「fileカラム」に登録される流れです。
手持ちにファイルが10000個ほどあり、これを1ずつアップロードして登録するのは大変なので、S3上にファイルを10000個を入れ、データ挿入バッジを叩いて登録していきたいと考えております。
S3上のファイルの名前の一覧であるnamelist.txtを用意し、いかのようにinsert_data.rbファイルで回して登録していきたのですが、fileの指定方法が分からずこちらに質問させていただいた次第です。
namelist.txtは以下のようになっている。
filename1.mp3
filename2.mp3
filename3.mp3
filename4.mp3
・
・
・
ruby
1 2# insert_data.rb 3require 'csv' 4require 'pp' 5 6filename = "namelist.txt" 7 8ActiveRecord::Base.transaction do 9 CSV.foreach(filename, :col_sep => "\t") do |row| 10 # baseは拡張子を取った名前(filename1) 11 base = File.basename(row[0], '.*') 12 User.create! :name=> base, :file=> S3上のファイルパス(uploads/filename1.mp3みたいなイメージ?), 13 end 14end 15 16 17ーーーーーーーーーーー 追記 ーーーーーーーーーーー 18下記コードで解決しました 19 20 CSV.foreach(filename, :col_sep => "\t") do |row| 21 # baseは拡張子を取った名前(filename1) 22 base = File.basename(row[0], '.*') 23 User.create(name: base, file: File.open("/home/#{row[0]}")) 24 end 25
参考になるサイトでも構いませんので、適切な方法をご教示いただけますと幸いです。
よろしくお願いいたします。
環境
Amazon Linux release 2 (Karoo)
Rails 5.2.3
Ruby version: 2.7.1
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。