Cloudn の Object Storage を Rails の Carrierwave で S3 の代わりに使用する

endpoint を定義すれば良い。


設定ファイルを独自に作成。
管理コンソールの、アカウント / セキュリティー証明書 の所に、
アクセスキーIDとシークレットキーは書かれている。

自分は以下のように定義して使用しています。

$ vi config/carrierwave.yml

development:
  provider:                 AWS
  aws_access_key_id:        "アクセスキーID"
  aws_secret_access_key:    "シークレットキー"
  endpoint:                 https://str.cloudn-service.com
  #region:                   ap-northeast-1
  fog_directory:            "作成したバケット名"

...

$ vi config/initializers/carrierwave.rb

module CarrierwaveConfig

  CONFIG = YAML.load_file("#{Rails.root}/config/carrierwave.yml")[Rails.env]

  PROVIDER = CONFIG['provider']
  AWS_ACCESS_KEY_ID = CONFIG['aws_access_key_id']
  AWS_SECRET_ACCESS_KEY = CONFIG['aws_secret_access_key']
  REGION = CONFIG['region']
  HOST = CONFIG['host']
  ENDPOINT = CONFIG['endpoint']
  FOG_DIRECTORY = CONFIG['fog_directory']
end

CarrierWave.configure do |config|

  config.fog_credentials = {
    provider: CarrierwaveConfig::PROVIDER,
    aws_access_key_id: CarrierwaveConfig::AWS_ACCESS_KEY_ID,
    aws_secret_access_key: CarrierwaveConfig::AWS_SECRET_ACCESS_KEY,
    region: CarrierwaveConfig::REGION,
    endpoint: CarrierwaveConfig::ENDPOINT,
    host: CarrierwaveConfig::HOST,
  }

  config.fog_directory = CarrierwaveConfig::FOG_DIRECTORY
end

あとはS3と同じように利用できます。