その他
    ホーム 技術発信 DoRuby CarrierWave を使用した IDCF オブジェクトストレージ保存
    CarrierWave を使用した IDCF オブジェクトストレージ保存
     

    CarrierWave を使用した IDCF オブジェクトストレージ保存

    この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

    Railsに画像等のファイルをアップロードする機能を実装するgem「CarrierWave」を使用して、ファイルをIDCFのオブジェクトストレージへ保存する方法。

    アップローダの編集

    「rails g uploader XXX」 にて生成されるアップローダ(app/uploaders/XXX_uploader.rb)を、以下の様に編集する。

    class XXXUploader < CarrierWave::Uploader::Base
      storage :fog # オブジェクトストレージに保存する場合は :fog を指定
      ### 以下省略 ###
    end
    

    初期化設定

    下記の様な設定ファイルを作成し、config/initializers/carrierwave.rb 等として保存。

    CarrierWave.configure do |config|
      config.fog_credentials = {
        provider:              'AWS', # IDCFでもAWSと記述
        path_style:            true,
        host:                  'ds.jp-east.idcfcloud.com',
        port:                  443,
        scheme:                'https',
        aws_access_key_id:     'XXX', # アクセスキーを記述
        aws_secret_access_key: ENV['SECRET_IDCF_SECRET_KEY'], # シークレットキー
        region:                'ap-northeast-1', # 東京
        aws_signature_version: 2
      }
      config.cache_storage = :fog # 一時ファイルもオブジェクトストレージに保存する場合(LB使用時は必須)
      config.fog_directory = 'XXX' # バケット名を記述
    
      config.asset_host = 'ds.jp-east.idcfcloud.com' # CDNを使用しない場合
      config.asset_host = 'https://XXX.cdn.jp.idcfcloud.com/' # CDNを使用する場合
    end