Ruby On Rails in UA/Разработка на ROR/Папку в архив.. как?!

04 июля 2009, 06:37
moff
moff
Живет: не указан
Сообщений: 7
Рейтинг: 0.0
Рег: 02 мая 2009

Папку в архив.. как?!
  •  
Если кто знает, то подскажите, пожалуйста..

На сервере есть папка, допустим /folder/
В этой папке много файлов.. Необходимо эту папку запаковать в архив средствами RoR.. Может кто знает как такое возможно сделать?! Может gem какой-то для этого есть..

Заранее спасибо..
,
04 июля 2009, 06:59
killich
Илья Зайко
Живет: Moscow,RUS
Сообщений: 425
Рейтинг: 139.0
Рег: 27 окт. 2008
Его блог
RE: Папку в архив.. как?!
  •  
5.0 из 1 гол.
moff http://rubyzip.sourceforge.net/
The following example opens zip archive my.zip (creating it if it doesn’t exist) and adds an entry first.txt and a directory entry a_dir to it.

  require 'zip/zip'

  Zip::ZipFile.open("my.zip", Zip::ZipFile::CREATE) {
   |zipfile|
    zipfile.get_output_stream("first.txt") { |f| f.puts "Hello from ZipFile" }
    zipfile.mkdir("a_dir")
  }

The next example reopens my.zip writes the contents of first.txt to standard out and deletes the entry from the archive.

  require 'zip/zip'

  Zip::ZipFile.open("my.zip", Zip::ZipFile::CREATE) {
    |zipfile|
    puts zipfile.read("first.txt")
    zipfile.remove("first.txt")
  }
может это? или просто в гугле -> ruby zip archive
------------
Илья aka Зайко (aka Killich) Тот самый учитель информатики >:0)
04 июля 2009, 07:43
moff
moff
Живет: не указан
Сообщений: 7
Рейтинг: 0.0
Рег: 02 мая 2009

RE: RE: Папку в архив.. как?!
  •  
Илья Зайко Спасибо, Илья.. ) Как раз то что нужно.. ^_^

Только вопрос: когда скрипт заканчивает работу - в папке рядом с архивом находятся еще какие-то файлы.. Очень странные.. Частично состоящие из названий файлов что я в архив упрятал + дата + что-то еще.. А внутри файлов - информация из заархивированных файлов..

Это можно как-то убрать?!
04 июля 2009, 07:51
killich
Илья Зайко
Живет: Moscow,RUS
Сообщений: 425
Рейтинг: 139.0
Рег: 27 окт. 2008
Его блог
RE: Папку в архив.. как?!
  •  
moff =) если б я хоть раз это использовал сам, я б обязательно ответил =)
------------
Илья aka Зайко (aka Killich) Тот самый учитель информатики >:0)
04 июля 2009, 07:52
moff
moff
Живет: не указан
Сообщений: 7
Рейтинг: 0.0
Рег: 02 мая 2009

RE: RE: Папку в архив.. как?!
  •  
Илья Зайко Ну ничего.. ) И на этом спасибо..
Удачи)
04 июля 2009, 12:20
admin
Ruslan Voloshin
Живет: Odessa,UKR
Сообщений: 2156
Рейтинг: 532.0
Рег: 13 марта 2007
Его блог
RE: RE: RE: Папку в архив.. как?!
  •  
5.0 из 1 гол.
moff Вот у меня реализован еще такой вариант
 def download_client
    client_type = params[:id]
    if client_type.eql?('php')
      file_name = "tmp/ziped_clients/#{current_user.uid}.zip"
      FileUtils.remove_file(file_name, true)
=begin
  Версия с созданием файла пхп архива.
=end
      file = Zip::ZipFile.open(file_name, Zip::ZipFile::CREATE) {
        |zipfile|
        zipfile.mkdir(current_user.uid.to_s)
        zipfile.add("#{current_user.uid}/client.php", "#{RAILS_ROOT}/crawler/client.php")
      }
=begin
  Версия с созданием пхп архива в через прямую запись в архив.
=end  
      #      Zip::ZipOutputStream::open("my.zip"){ |io|
      #        io.put_next_entry("#{current_user.uid}/client.php")
      #        File.open("#{RAILS_ROOT}/crawler/client.php"){|f|
      #          f.each{|line| io.write line}}
      #        io
      #      }
      send_file file_name, :size => file.size,  :filename => "#{current_user.uid}.zip"
    else
      render :text => 'Unknown client format!!!'
    end
    return

------------
Операции с WM | SEO консультации
, ,
04 июля 2009, 19:41
Yako
Denis Yakunkchikov
Живет: Togliatti
Сообщений: 7
Рейтинг: 5.0
Рег: 20 дек. 2008

RE: Папку в архив.. как?!
  •  
moff Можно еще через ruby tar (видел где то в сети) а дальше через Zlib в tar.gz Про Zlib есть в Programming Ruby если вы забыли
14 июля 2009, 07:17
moff
moff
Живет: не указан
Сообщений: 7
Рейтинг: 0.0
Рег: 02 мая 2009

RE: RE: RE: RE: Папку в архив.. как?!
  •  
Ruslan Voloshin Спасибо.. ) Этот вариант очень помог мне сделать некоторые части что мне нужно.. Большое спасибо)

Гости: 55 Онлайн: 0