Carrierwave не определяет размеры версий, используя rmagick - PullRequest
2 голосов
/ 27 декабря 2011

Я пытаюсь использовать carrierwave для управления изображениями.Моя проблема в том, что все версии изображений, которые я загружаю, созданы, но в полном размере.Код:

class TechnologyImageUploader < CarrierWave::Uploader::Base

  # Include RMagick or MiniMagick support:
  include CarrierWave::RMagick

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

  # Process files as they are uploaded:
  #process :scale => [100, 100]

  version :small do
     process :resize_to_fit => [25,25]
  end
  version :medium do
     process :resize_to_fit => [50,50]
  end
end

Все версии изображений отображаются как размер исходной загрузки.

Ответы [ 3 ]

1 голос
/ 07 марта 2012

Решением моей проблемы было то, что среда rails была названа 'staging' на сервере и 'development' на mac.

Строка 4 в файле config / initializers / carrierwave.rb (строка 4)отключает обработку несущей волны для сред с именем 'staging'.

Для того, чтобы обработка работала, мне нужно было включить с этой строкой:

config.enable_processing = true
1 голос
/ 26 февраля 2012

Не уверен, что у вас, ребята, есть эта проблема по той же причине, что и у меня, но, может быть.Мне нужно было переместить загруженные файлы в личную папку, ведь я уверен, что вы тоже это сделали.

После загрузки я хотел удалить кэш, с которым я делал:

after :store, delete_cache

def delete_cache( new_file )
  FileUtils.rm_rf %{#{Rails.root.to_s}/public/uploads}
end

Проблема в том, что после создания версии будет запущено after: store, поэтому приложение удаляет каталог кэша, поэтому другие методы версии больше не могут читать этот файл.

Длявременным решением было переместить cache_dir в личную папку.Что мне нужно, чтобы потом опустошить другим способом, что мне нужно будет выяснить, так:

def cache_dir
  %{#{Rails.root.to_s}/tmp/uploads}
end
0 голосов
/ 20 ноября 2013

У меня как-то похожая проблема с моим приложением. Хотя, думаю, я понял, что при использовании версий полезно установить каждый «процесс» в качестве версии ... В противном случае я заметил, что некоторые методы «перезаписывают» другие ... Bizarre.

class ImageUploader < CarrierWave::Uploader::Base
  include CarrierWave::RMagick

  if Rails.env == "production"
    storage :aws
  else
    storage :file
  end

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

  #this is the 'first' process, 'while you upload', the one that seems to be an issue
  process resize_to_fill: [228, 250]


  version :industry do
    process resize_to_fit: [228, 250]
  end

  version :portrait do
    process resize_to_fill: [360, 200]
  end

  version :modal do
    process resize_to_fill: [330, 300]
  end

end

, который затем станет ::

class ImageUploader < CarrierWave::Uploader::Base
  include CarrierWave::RMagick

  if Rails.env == "production"
    storage :aws
  else
    storage :file
  end

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

  #i put everything as a version and it sorts the problem out..

  version :base do
    process resize_to_fill: [228, 250]
  end

  version :industry do
    process resize_to_fit: [228, 250]
  end

  version :portrait do
    process resize_to_fill: [360, 200]
  end

  version :modal do
    process resize_to_fill: [330, 300]
  end

end

Я надеюсь, что это «правда» и будет полезно для других пользователей

Marin

...