1
我正在使用Ruby官方Ruby C界面,並且無法使用bzip工作。它沒有建立與支持的bzip,的./configure說:TokyoCabinet的Ruby C界面不能bzip
checking bzlib.h usability... yes
checking bzlib.h presence... yes
checking for bzlib.h... yes
所以我寫了,只是寫一個條目來兩個文件,一個據稱bzip'd和一個不是這個示例程序。兩者都不是壓縮的;除了最後的簡單文件大小測試之外,我可以編輯with_bzip.tcb 文件並在那裏查看原始字符串文本。
require 'tokyocabinet'
include TokyoCabinet
def write filename, options
File.unlink filename if File.exists? filename
bdb = BDB::new
bdb.tune(0, 0, 0, -1 -1, options) or raise "Couldn't tune"
bdb.open(filename, BDB::OWRITER | BDB::OCREAT | BDB::OLCKNB) or raise "Couldn't open"
bdb["test"] = "This string should be compressed and not appear raw.\n" * 10000
bdb.close
end
write 'without_bzip.tcb', 0
write 'with_bzip.tcb', BDB::TBZIP
puts "Not actually compressed" unless File.size('with_bzip.tcb') < File.size('without_bzip.tcb')
是什麼使情況變得更糟的是,如果我嘗試俄克拉荷馬攪拌機(下面的例子 - 雖然我沒有信譽添加新標籤)的預覽版,它壓縮的罰款。當我在try()調用中加入一些調試時,它似乎會調用相同的調用(0,0,0,-1,-1,4)。我完全難住 - 任何人都可以告訴我上面的代碼做錯了什麼?
require 'oklahoma_mixer'
OklahomaMixer.open("minimal_om.tcb", :opts => 'lb') do |db|
db["test"] = "This string should be compressed and not appear raw.\n" * 10000
end