2012-06-01 3 views
0

Так что я использую Spree как свою корзину покупок в Ruby on Rails. Spree имеет версию 1-1-stable, а Ruby - v1.9.3, а Ruby on Rails - v3.2.3.пытается загрузить файлы с использованием задачи ruby ​​rake

У меня есть удаленный хост, у которого есть изображения, которые я хочу скачать для своей тележки с Шпрей. Это код, который я использую, чтобы вытащить его. Некоторые из них могут не иметь смысла, потому что я стараюсь сделать все возможное, чтобы заставить это работать, чтобы он мог использовать небольшую очистку.

# Add image to the product 
     vendor_id = plink_and_pull(item, "VendorID") 
     image_name = plink_and_pull(item, "ImageName") 
     # TODO: add if image exists to this unless 
     unless image_name.nil? || vendor_id.nil? || plink_and_pull(item, "ImageFound").to_i == 0 || File.exists?("/public/prod_images/#{vendor_id}/#{image_name.gsub(' ', '%20')}") 
      unless Dir.exists? "/public/prod_images/#{vendor_id}" 
       Dir.mkdir("/public/prod_images/#{vendor_id}", 777) 
      end 
      file = File.new("public/prod_images/#{vendor_id}/#{image_name.gsub(' ', '%20')}", 'w+') 
      file.binmode 

      open(URI.parse("http://login.xolights.com/vendors/#{vendor_id}/large/#{image_name.gsub(' ', '%20')}")) do |data| 
       file.write data.read 
      end 
      img = Spree::Image.create({:attachment => "public/prod_images/#{vendor_id}/#{image_name}", 
             :viewable => product}, :without_protection => true) 
     end 

Но Я получаю ошибку говорит «Нет такого файла или каталога -/государственные/prod_images/29» и ссылается на строку «Dir.mkdir» там. Однако я вручную создал этот каталог, чтобы попытаться заставить его работать. В моем исключении, у меня есть распечатка рабочего каталога, который является базовым каталогом моего приложения на моей машине. (Я запускаю это на localhost atm.)

Я думаю, что, возможно, мне нужно что-то сделать в файле routes.rb? Но я такой новичок на маршрутах Ruby on Rails, что не уверен, с чего начать ... или даже если это проблема.

+0

Вы создали «/ public/prod_images /» или «public/prod_images /»? (Обратите внимание, что первый из них находится под root, что редко бывает хорошей идеей) – Salil

+0

Извините, я должен уточнить. :) Я получал эту ошибку до того, как создал каталоги (и после нее тоже), и я просто хотел убедиться, что фактическая загрузка файла работает, поэтому в мой графический интерфейс в RubyMine Я буквально щелкнул правой кнопкой мыши и создал/prod_images и/29. :) – melissanoelle

+0

Я не знаком с RubyMine. Но будьте уверены, что речь идет не о маршрутах. Это не Rails-специфический. Это Ruby (и OS) -специфичный, потому что Dir.mkdir входит в стандартную библиотеку Ruby. Просто удалите ведущий/с пути и посмотрите, работает ли он. (Итак, фактический путь будет {ваш корневой каталог приложения Rails}/public/prod_images – Salil

ответ

0

Я не знаком с RubyMine. Но будьте уверены, что речь идет не о маршрутах. Это не Rails-специфический. Это Ruby (и OS) -специфичный, потому что Dir.mkdir входит в стандартную библиотеку Ruby. Просто удалите ведущий/с пути и посмотрите, работает ли он. (Итак, фактический путь будет {ваш корневой каталог приложения Rails}/public/prod_images

Смежные вопросы