Cloudinaryに画像をアップするフォルダアクション

準備

  • Cloudinary の Ruby SDK をインストール
gem install cloudinary

アップロード用の Ruby スクリプト

  • upload.rbという名前で、Ruby SDK を使ったスクリプトをかく
  • cloud_nameapi_keyapi_secretは、Cloudinary の Dashboard で確認できる
  • 画像のファイル名は引数 ARGV[0] で取得する
  • アップロードすると、upload にレスポンスが Hash 形式で入る
  • format を webp、quality を auto として画像を取得する場合の URL をクリップボードにコピー&標準出力
require 'cloudinary'

cloud_name = '********'
api_key = '********'
api_secret = '********'

Cloudinary.config do |config|
  config.cloud_name = cloud_name
  config.api_key = api_key
  config.api_secret = api_secret
  config.secure = true
end

filename = ARGV[0]

upload = Cloudinary::Uploader.upload(filename, :overwrite => true, :resource_type => "auto")

url = "https://res.cloudinary.com/#{cloud_name}/image/upload/q_auto/v#{upload['version']}/#{upload['public_id']}.webp"

IO.popen('pbcopy', 'w') { |f| f.print url.to_s }

puts url

フォルダアクション

  • シェルに /usr/bin/ruby を指定することもできるが、バージョンが古い
  • フォルダ内に upload.rb を置いて、rbenv でインストールした ruby で実行することにした
  • upload.rbの動作は前節の通りで、最後に、画像 URL を標準出力に渡す
  • 画像 URL を変数 url に入れて、通知するようにした
Posted :