URL-адрес CarrierWave Uploader указывает на локальную файловую систему при использовании облака - PullRequest
3 голосов
/ 01 ноября 2011

Я использую Carrierwave в своем приложении Rails для обработки загрузки изображений. Когда я настраиваю загрузчик для локального хранения файлов, все прекрасно работает. Проблема возникает, когда я прошу загрузить сервис облачных файлов Rackspace. Загрузка отлично работает, я вижу файлы на панели управления. Проблема в том, что Carrierwave возвращает URL на загрузчике, как если бы файл хранился локально. то есть: @foo.uploader.url выглядит как /User/bar/Code/app/public/uploads/yeah.jpeg вместо http://cloudcloud.com/yeah.jpg.

Куда я иду не так?

# config/initializers/carrier_wave.rb

CarrierWave.configure do |config|
  config.storage = :fog

  config.fog_credentials = {
    :provider           => 'Rackspace',
    :rackspace_username => 'foo',
    :rackspace_api_key  => '0f0f0f0f0f0f0f'
  }

  config.fog_directory = 'development-images'
end

# app/uploaders/foo_uploader.rb

class FooUploader < CarrierWave::Uploader::Base
  def store_dir
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end
end

1 Ответ

4 голосов
/ 03 ноября 2011

Я посмотрел на свой собственный код для загрузчика Rackspace, и единственное отличие, которое я вижу, это то, что я установил fog_host для URL CDN, например:

config.fog_host = "http:/something.rackcdn.com"
...