Rails 3: Как создать сжатый файл по запросу - PullRequest
6 голосов
/ 17 февраля 2011

Как генерировать сжатые файлы по запросу.

У меня есть этот контроллер

def create    
    send_data generate_tgz("#{RAILS_ROOT}/tmp/example.txt"), :filename => 'export.tgz'    
end

Но он дает мне метод, не найденный в generate_tgz.

Этоплагин или драгоценный камень?Нужно ли что-нибудь требовать?Могу ли я сгенерировать файл zip вместо этого?

Редактировать:

def generate_tgz(file)
    system("tar -czf #{RAILS_ROOT}/tmp/export-result #{RAILS_ROOT}/tmp/export")
    content = File.read("#{RAILS_ROOT}/tmp/export-result")
    #ActiveSupport::Gzip.compress(content)    
end

Это создает tgz, но когда я распаковываю его, я получаю app / c3ec2057-7d3a-40d9-9a9d-d5c3fe3ffd6f / home/ tmp / export / and_the_files

Я бы хотел, чтобы это было просто: export / the_files

1 Ответ

3 голосов
/ 17 февраля 2011

Метод не существует. Вы можете легко создать его, используя ActiveSupport :: Gzip .

def generate_tgz(file)
  content = File.read(file)
  ActiveSupport::Gzip.compress(content)
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...