転送量無料で 100GB あたり 450 円/月という ConoHa オブジェクトストレージ を CarrierWave から使う方法です。
公開設定にすることで、画像サーバとして使うことができます。
CarrierWave のバージョンは 0.10.0、fog のバージョンは 1.24.0 で確認しています。
公開設定でコンテナを作成する
まず、公開設定でコンテナを作成します。
ConoHa のコントロールパネルからは公開設定のコンテナを作成できませんので、プログラムで作成します。
必要な情報は、コントロールパネルの「アカウント - API」( https://cp.conoha.jp/Account/API/ ) に掲載されています。
require 'fog' CONOHA_TENANT_NAME = (テナント名) CONOHA_USERNAME = (ユーザー名) CONOHA_API_PASSWORD = (API パスワード) CONOHA_API_AUTH_URL = (API Auth URL) CONOHA_CONTAINER_NAME = (作成するコンテナ名) service = Fog::Storage.new( provider: 'OpenStack', openstack_tenant: CONOHA_TENANT_NAME, openstack_username: CONOHA_USERNAME, openstack_api_key: CONOHA_API_PASSWORD, openstack_auth_url: CONOHA_API_AUTH_URL + '/tokens', ) service.put_container(CONOHA_CONTAINER_NAME, public: true, headers: { 'X-Web-Mode' => 'true' })
CarrierWave の設定
Gemfile
gem 'carrierwave' gem 'fog' gem 'dotenv-rails'
config/initializers/carrierwave.rb
CarrierWave.configure do |config| if Rails.env.production? config.fog_credentials = { provider: 'OpenStack', openstack_tenant: ENV['CONOHA_TENANT_NAME'], openstack_username: ENV['CONOHA_USERNAME'], openstack_api_key: ENV['CONOHA_API_PASSWORD'], openstack_auth_url: ENV['CONOHA_API_AUTH_URL'] + '/tokens', } config.fog_directory = ENV['CONOHA_CONTAINER_NAME'] config.storage :fog config.asset_host = ENV['CONOHA_ASSET_HOST'] + '/' + ENV['CONOHA_CONTAINER_NAME'] else config.storage :file end end
.env
CONOHA_TENANT_NAME=(テナント名) CONOHA_USERNAME=(ユーザー名) CONOHA_API_PASSWORD=(API パスワード) CONOHA_API_AUTH_URL=(API Auth URL) CONOHA_CONTAINER_NAME=(コンテナ名) CONOHA_ASSET_HOST=(オブジェクトストレージエンドポイント)
以上で、production 環境のときは ConoHa オブジェクトストレージにデータが保存されます。