いつもお世話になっております。
Railsでmp3のアップロード、ダウンロードができるるようなシステムを開発しています。
S3 + Carrierwaveで実装しています。
またS3をlinux上の/home/rails/mp3dataにマウントしている状態です。
mp3ファイルをS3よりダウンロードする際にメタデータの書き換え(タイトル、アーティスト情報など)を変更したいと考えています。
以下のような形で実装しているのですが、場合により、メタデータの書き換えが終了するより先にダウンロードが始まってしまいます。
Mp3Info.open(linux_path) do |mp3|
mp3.tag2.TIT2 = music.original_title
mp3.tag2.TPE1 = music.writer
end
上記処理が正常に終了したことをトリガーに次のプログラムへ進むといったことが分からずこちらに質問させていただきました。
適切な方法をご教示のほどお願いいたします。
ruby
1 2 music = Music.find(params[:music_id]) 3 key = music.music_data.path 4 file_name = music.music_data.identifier 5 type = 'mp3' 6 7 # マウントしたS3のLinux上のファイルパス 8 linux_path = "/home/rails/mp3data/#{key}" 9 10 # 以下のファイルオープンからエンドが終わるまで次のプログラムに行かないようにしたい 11 if File.exists?(linux_path) 12 Mp3Info.open(linux_path) do |mp3| 13 mp3.tag2.TIT2 = music.original_title 14 mp3.tag2.TPE1 = music.writers_txt 15 mp3.tag2.TALB = music.ops_txt 16 end 17 end 18 19 20 s3 = Aws::S3::Resource.new( 21 region: Region_name, 22 credentials: Aws::Credentials.new( 23 S3_access_key, 24 S3_secret_key 25 ) 26 ) 27 data = s3.client.get_object(:bucket => Bucket_name, :key => key).body 28 29 send_data data.read, filename: file_name, type: type 30
あなたの回答
tips
プレビュー