この記事はアピリッツの技術ブログ「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