Я пытаюсь использовать Carrierwave для загрузки файлов, а затем после завершения загрузки используйте парсер XML ruby-nmap для заполнения некоторых полей.Carrierwave Загрузка XML-файла и ruby-nmap не находит его
Я установил таймер сна на 8, чтобы убедиться, что файлы загружаются. Я установил это целых 20. Я вижу, как они загружаются и находятся в правильном каталоге. Однако ruby-nmap говорит, что он не может найти файл, как будто его не существует.
Я создал простой эшафот, и я манипулирую частью «def create».
кодконтроллер:
def create
@nmapfile = Nmapfile.new(nmapfile_params)
@nmapfile.nmapfilerecords = 0
@nmapfile.save
sleep 8
Nmap::XML.new(@nmapfile.nmapxml.to_s) do |xml|
xml.each_host do |host|
if "#{host.status}" == "down"
else
@nmapfile.nmapfilerecords += 1
end
end
end
respond_to do |format|
if @nmapfile.save
format.html { redirect_to @nmapfile, notice: 'nmap file was successfully created.' }
format.json { render action: 'show', status: :created, location: @nmapfile }
else
format.html { render action: 'new' }
format.json { render json: @nmapfile.errors, status: :unprocessable_entity }
end
end
end
Ошибка я получаю: Errno :: ENOENT в NmapfilesController # не создавать (Нет такого файла или каталога - /uploads/nmapfile/nmapxml/21/scan.xml)
И все же, scan.xml существуют в этом каталоге.
Я запускал это так же, как просто работает рубиновый скрипт. На дисплее отображается 11 на экране консоли. Таким образом, в файле нет проблемы. Это здесь.
require 'nmap/xml'
nmapfilerecords = 0
Nmap::XML.new('/Users/colemk1/Documents/Aptana Studio 3 Workspace/JumpSquares/public/uploads/nmapfile/nmapxml/21/scan.xml') do |xml|
xml.each_host do |host|
if "#{host.status}" == "down"
else
nmapfilerecords += 1
end
end
puts nmapfilerecords
end
Любая помощь приветствуется