Загруженные Carrierwave изображения не сохраняются после развертывания Capistrano

Я только что заметил, что после повторного развертывания моего приложения rails в рабочей среде с cap deploy:migrations любым изображением, которое я загрузил через свои формы администратора (например, создание отзыва с изображением аватара), ссылки на изображения теперь не работают. Изображения выглядят нормально, пока я не повторно развертываю какой-либо код, что нежелательно, поскольку я довольно часто вношу изменения в код. Я предполагаю, что это связано с тем, как capistrano создает файловую структуру в «выпусках» для каждого развертывания, но я не уверен, как решить эту проблему.

Я также не отслеживаю public/uploads с помощью git, так как не хочу, чтобы поддельный контент, который я использую на локальном хосте, появлялся в производстве.

Итак, до моего последнего запуска кода у меня были все изображения, так как я только что добавил их. Теперь после нажатия изображений нет:

неработающие ссылки на изображения

Вот файлы, которые я считаю актуальными (дайте мне знать, если есть еще один, который вам нужно увидеть помимо этих):

avatar_uploader.rb:

class AvatarUploader < CarrierWave::Uploader::Base
  include CarrierWave::RMagick
  storage :file

  def store_dir
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end

  process :resize_to_fit => [200, 200]

  def extension_white_list
    %w(jpg jpeg gif png)
  end
end

person Godzilla74    schedule 28.05.2015    source источник


Ответы (2)


По умолчанию Capistrano связывает каталог public/system. Итак, чтобы сохранить ваши изображения, просто измените

def store_dir
  "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end

to

def store_dir
  "system/uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
person hedgesky    schedule 28.05.2015

Похоже, вы не настраиваете переменную linked_dirs в файле deploy.rb (в случае Capistrano 3) или не указывать сим-ссылку на ваш public/uploads от shared/public/uploads (в случае Capistrano 2).

Без этого все развертывание будет «переопределять» каталог public/uploads.

Здесь подробнее.

person ethyl.bradtke    schedule 28.05.2015