Heroku, как заполнять образы несущей волной, используя file.open и rake

  rake db:populate (works)
  heroku run rake db:populate (works to some extent)

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

  namespace :db do
     desc "Fill database with sample data"
     task populate: :environment do
     .
     .
     @uploader = ImageUploader.new(@movie_project, :image)
     @uploader.store!(File.open("app/assets/images/photos/picture.jpg"))
     @movie_project.image = @uploader

Все MovieProjects успешно заполнены данными (название, жанр и т.д.). Это единственное изображение, которое не создается на героку. Я подозреваю, что это как-то связано с

  File.open

Пробовал такие вещи, как смена каталога, но безуспешно, может быть, я просто использую неправильный каталог

  app/assets/images => public/assets/ ?

Я использую cedar stack, rails 3.2, Carrierwave, а активы предварительно компилируются перед загрузкой. Это просто для тестирования, чтобы протестировать разные макеты. Создание MovieProject и назначение изображения работает на Heroku, но использование вышеуказанных методов, похоже, не работает.

//

Спасибо Джон


person Jon Andersen    schedule 07.03.2012    source источник


Ответы (1)


Сегодня вечером столкнулся с той же проблемой и исправил ее следующим образом:

Во-первых, убедитесь, что у вас есть что-то подобное в вашем загрузчике или инициализаторе:

config.cache_dir = "#{Rails.root}/tmp/uploads"

Теперь используйте метод несущей волны cache! вместо store!. Я также звоню save! потом

 @uploader.cache!(File.open("app/assets/images/photos/picture.jpg"))
 @movie_project.image=@uploader
 @movie_project.save!

Надеюсь, это поможет, дайте мне знать, если это не так

person stephenmurdoch    schedule 10.03.2012
comment
Переход на кеш у меня не работает, на самом деле он даже не работает локально на моем компьютере. Мой инициализатор: carriewave.rb CarrierWave.configure do |config| config.cache_dir = #{Rails.root}/tmp/конец загрузки - person Jon Andersen; 12.03.2012
comment
Если я закомментирую инициализатор carriewave.rb, он будет работать с локальным кешем. Изображения по-прежнему кэшируются с использованием #{Rails.root}/tmp/uploads, поэтому я не уверен, в чем заключается ошибка, но не назначен для movie_project. - person Jon Andersen; 12.03.2012