フォグを直接使用する
まず、まだ使用していない場合は、Ruby から Cloud Files を直接操作するために公式にサポートされている Ruby ライブラリはfogです。開始するには、次のように追加しますGemfile
。
gem 'fog'
次に、実行bundle install
してインストールします。
ファイルをアップロードして公開 URL を取得するには、fog を直接使用します。
# Use your Rackspace API key, not your password; you can find your API key by logging
# in to the control panel, clicking on your name in the top-right, and choosing
# "account settings".
service = Fog::Storage.new(
provider: 'rackspace',
rackspace_username: ENV['RACKSPACE_USERNAME'],
rackspace_api_key: ENV['RACKSPACE_API_KEY']
)
dir = service.directories.create key: 'directory-name', public: true
files_to_upload.each do |path|
file = dir.files.create key: File.basename(path), body: File.open(path, 'r')
puts "public URL for #{file} is #{file.public_url}"
end
CarrierWave の使用
でも!あなたがやっていることは、Rails ではかなり一般的なユースケースなので、そのための gem があります: CarrierWaveです。次の行を Gemfile に追加します。
gem 'fog'
gem 'carrierwave'
実行bundle install
してインストールします。ここで、Cloud Files を使用するように CarrierWave を構成します。
# config/initializers/carrierwave.rb
CarrierWave.configure do |config|
config.fog_credentials = {
:provider => 'rackspace',
:rackspace_username => 'xxxxxx',
:rackspace_api_key => 'yyyyyy'
}
config.fog_directory = 'name_of_directory'
end
次にアップローダを生成します:
rails g uploader Song
SongUploader
これで、 を使用してソング データを保存および取得できるようになりました。詳細については、生成されたコードまたはCarrierWave のドキュメントを参照してください。