質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.36%
Amazon RDS

Amazon RDSは、米アマゾン社が提供しているRDBMSサービス。クラウド上でのリレーショナルデータベースの構築および運用が可能です。MySQL/PostgreSQL/Oracle/SQL Serverのインストールを容易にすることができます。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Amazon S3

Amazon S3 (Simple Storage Service)とはアマゾン・ウェブ・サービスが提供するオンラインストレージサービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

1回答

677閲覧

Rails Carrierwave RDS S3 htmlを経由せずにデータベースにファイルを登録する

lyzmfeqpxs54

総合スコア237

Amazon RDS

Amazon RDSは、米アマゾン社が提供しているRDBMSサービス。クラウド上でのリレーショナルデータベースの構築および運用が可能です。MySQL/PostgreSQL/Oracle/SQL Serverのインストールを容易にすることができます。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Amazon S3

Amazon S3 (Simple Storage Service)とはアマゾン・ウェブ・サービスが提供するオンラインストレージサービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2020/08/21 03:37

編集2020/08/21 05:29

いつもお世話になっております。
現在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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

音声ファイルを/homeの直下に複数置き、ソースのcreate部分を下記のように記述しうまく動きました。

User.create(name: base, file: File.open("/home/#{row[0]}"))

投稿2020/08/21 05:27

lyzmfeqpxs54

総合スコア237

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問