##前提条件
rubyとrailsのバージョンは以下の通り。
ruby:2.6.3p62
rails:6.1.3.2
##herokuにcloudinaryを追加
herokuのweb画面からcloudinaryを追加する
##cloudinary.ymlの追加
cloudinaryの画面でYMLリンクをクリックしてymlをダウンロードする。(YMLリンク小さすぎ)
ここにapikeyとか全部書かれている。
ダウンロードしたymlはapp/configの下に配置する
##gemの追加
Gemfileに以下を追加
gem 'carrierwave'
gem 'cloudinary'
##uploderの生成と編集
以下のコマンドでapp/uploaders/cloudinary_image_uploader.rbが生成される
bundle exec rails g uploader CloudinaryImage
cloudinary_image_uploader.rbに以下を追加
include Cloudinary::CarrierWave
以下がcloudinary_image_uploader.rbにあるとcloudinaryに保存されないのでコメントアウト
storage :file
##画像の保存
今回はURLからjpeg画像を取得してcloudinaryに保存する
temp_file = Tempfile.new('temp_')
temp_file.binmode
open('画像のURL') do |file|
temp_file.write(file.read)
end
temp_file.rewind
model.image = ActionDispatch::Http::UploadedFile.new(filename: "ファイル名", type: 'image/jpeg', tempfile: temp_file.open)
model.save!
temp_file.close