Yak shaving logs


My life is just yak shaving.

[Rails] ActiveStorageでCDNなどを利用できるようにURLを書き換える

2019/12/04 #rails #activestorage #CDN

By Yusuke Takita


こんにちは。Takitaです。

ActiveStorageがCDNに対応していないため、
自前でCDN対応をする方法について書きました。

結論から言うと、 cdn_url_for というヘルパーを使って対応します。
こんな感じで対応しました。

# hoge.haml
- = image_tag url_for(object.img)
+ = image_tag cdn_url_for(object.img)
# application_helpler.rb
# decoratorに寄せても良いと思います

def cdn_url_for
  # 現在のサービス(storage.ymlの:localや:amazonに該当する箇所)を取得
  active_storage_service_name = Rails.application.config.active_storage.service
  # storage.ymlの内容を取得
  active_storage_configurations = Rails.application.config.active_storage.service_configurations

  return '' unless active_storage_configurations.key?(active_storage_service_name.to_s)

  # storage.ymlの内容から現在のサービスの設定を取得
  current_configurations = active_storage_configurations[active_storage_service_name.to_s]

  # TODO: 定数化
  return '' unless current_configurations['service'] == 'S3'

  key = active_storage_object&.blob&.key
  # TODO 定数化およびパラメータを編集できるようにする
  "https://hogepiyo.imageflux.jp/#{key}"
end

参考

メモ:ActiveStorageで格納した画像をCloudfront配信する - Qiita

→ 一番上に出てきました。雰囲気をつかみやすかった。

ActiveStorage and CDN : rails

→ 2019/10現在もactive_storageが未対応か調査(下のPRも含め)

Active storage add proxying by fleck · Pull Request #34477 · rails/rails · GitHub

このエントリーをはてなブックマークに追加

categories


最新記事


tags