Так что я использую 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, что не уверен, с чего начать ... или даже если это проблема.
Вы создали «/ public/prod_images /» или «public/prod_images /»? (Обратите внимание, что первый из них находится под root, что редко бывает хорошей идеей) – Salil
Извините, я должен уточнить. :) Я получал эту ошибку до того, как создал каталоги (и после нее тоже), и я просто хотел убедиться, что фактическая загрузка файла работает, поэтому в мой графический интерфейс в RubyMine Я буквально щелкнул правой кнопкой мыши и создал/prod_images и/29. :) – melissanoelle
Я не знаком с RubyMine. Но будьте уверены, что речь идет не о маршрутах. Это не Rails-специфический. Это Ruby (и OS) -специфичный, потому что Dir.mkdir входит в стандартную библиотеку Ruby. Просто удалите ведущий/с пути и посмотрите, работает ли он. (Итак, фактический путь будет {ваш корневой каталог приложения Rails}/public/prod_images – Salil