それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。
") }) jQuery.noConflict()(document).ready(function(){ /**ページャーが気に入らないので修正**/ //やるべきこと // pre・next のいれかえ jQuery('span.pager-next').insertAfter('span.pager-prev') // pre/next に矢印を入れる jQuery('a[rel=next]').text(jQuery('a[rel=next]').text()+"> ") jQuery('a[rel=prev]').text("< "+jQuery('a[rel=prev]').text()) // pre/next をヘッダにもってくる //jQuery(".date.first").css("display","inline-block") jQuery('div.permalink.pager').clone().insertAfter(".date.first") jQuery("header .pager a").css("padding","0px 15px"); //pre/next をAjaxで取得してタイトルを取る。 //取得したタイトルをpre/next のタイトルに jQuery('span.pager-next,span.pager-prev').css("display","inline-block") jQuery('span.pager-next,span.pager-prev').css("width","250px"); jQuery('span.pager-next,span.pager-prev').css("overflow", "hidden"); jQuery('span.pager-next,span.pager-prev').css("white-space", "nowrap"); jQuery('span.pager-next,span.pager-prev').css("text-overflow", "ellipsis"); jQuery("a[rel=next],a[rel=prev]").each(function(idx,e){ var anchor = e jQuery.get(anchor.href,null,function(html){ jQuery(anchor).text() var title = jQuery("
").html(html).find(".entry-title").text().trim() jQuery(anchor).attr("title", title); text = jQuery(anchor).text() text = text.slice(0,10); text = text.replace(/の記事/, "の記事 ["+title+"] "); jQuery(anchor).text(text) }) }); }); })

zipruby でファイルを経由せずに変数内だけでzip ファイルを作る

zip ruby には buffer モードが有る。

zipruby をそのまま使うと、一時ファイルを作って出力先にzip を用意しなくちゃいけないので、tmpfile などと組み合わせる必要がるけど、変数だけでメモリ内部でぱぱっと作れないのか調べた。

ruby-zip-in-memory-sample.rb

#!/usr/bin/env ruby
#
require 'zipruby'

zip_bin = '' # ここにzipのバイナリが入ってくる

Zip::Archive.open_buffer(zip_bin){|ar|

  ar.add_buffer('sample.txt', "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n")
}

## 確認用にファイルに書き出す。
open('out.zip','w'){|f|  f.write zip_bin }

実際に使ってみる

実行すると無事に zip ファイルが生成される。

takuya@~/Desktop/$ ruby  ruby-zip-in-memory-sample.rb
takuya@~/Desktop/$ ll
-rw-r--r-- 1 takuya staff     123 2016-09-26 01:20 out.zip
-rw-r--r-- 1 takuya staff     206 2016-09-26 01:20 ruby-zip-in-memory-sample.rb

ちゃんとzip が出来ているか確認する。

takuya@~/Desktop/$ lsar out.zip
out.zip: Zip
sample.txt

展開して中身を確認

takuya@~/Desktop/$ unar out.zip
out.zip: Zip
  sample.txt  (30 B)... OK.
Successfully extracted to "./sample.txt".

takuya@~/Desktop/$ cat sample.txt
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

ファイルを使わずにzip アーカイブを作れることがわかった。

zip アーカイブを作ってresponseするのに毎回ファイルに書いているのもダルいしね。ウッかりとファイルが残ってしまうのも嫌だし。

参考資料

http://www.rubydoc.info/gems/zipruby/0.3.6