bin/sekka-server in sekka-1.4.0 vs bin/sekka-server in sekka-1.5.0
- old
+ new
@@ -20,20 +20,27 @@
if ENV.has_key?( 'SEKKA_AZIK' )
STDERR.printf( "Error: SEKKA_AZIK became obsolute. sekka-server use normal dictionary.\n" )
end
DICTSIZE = if ENV.has_key?( 'SEKKA_LARGE' )
- "LARGE"
+ if 1 == ENV[ 'SEKKA_LARGE' ].to_i
+ "LARGE"
+ else
+ "SMALL"
+ end
else
"SMALL"
end
TC_OPTS = "#xmsiz=256m"
TC_FILE = DICTDIR + "/SEKKA-JISYO.#{DICTSIZE}.#{DICTTYPE}.tch" + TC_OPTS
TSVFILE = DICTDIR + "/SEKKA-JISYO.#{DICTSIZE}.#{DICTTYPE}.tsv"
SUMFILE = DICTDIR + "/SEKKA-JISYO.#{DICTSIZE}.#{DICTTYPE}.md5"
+GDBM_FILE = DICTDIR + "/SEKKA-JISYO.#{DICTSIZE}.#{DICTTYPE}.db"
+
+
URLURL = DICTURL + "/SEKKA-JISYO.#{DICTSIZE}.#{DICTTYPE}.url"
SUMURL = DICTURL + "/SEKKA-JISYO.#{DICTSIZE}.#{DICTTYPE}.md5"
MEMCACHED = "localhost:11211" # memcahced
@@ -47,10 +54,12 @@
dictSource = m[1]
end
[ :redis, dictSource ]
elsif m = ENV['SEKKA_DB'].match( /^tokyo[a-z]+$/ )
[ :tokyocabinet, nil ]
+ elsif m = ENV['SEKKA_DB'].match( /^gdbm$/i )
+ [ :gdbm, nil ]
else
raise RuntimeError, "Error: env var SEKKA_DB requires [redis:hostname] or [redis:] or [tokyocabinet]"
end
else
[ :tokyocabinet, nil ]
@@ -60,10 +69,17 @@
def checkJisyoIsInstalled( dictType, dictSource )
key = "SEKKA:VERSION"
STDERR.printf( "Info: Checking SEKKA jisyo on #{dictType} server...\n" )
begin
result = case dictType
+ when :gdbm
+ require 'sekka/kvs'
+ tc = Kvs.new( :gdbm )
+ tc.open( dictSource )
+ ret = tc.get( key )
+ tc.close()
+ ret
when :tokyocabinet
require 'tokyocabinet'
require 'sekka/kvs'
tc = Kvs.new( :tokyocabinet )
tc.open( dictSource )
@@ -145,9 +161,22 @@
# 環境変数から、DBの接続先情報を取得する。
( dictType, dictSource ) = getSekkaDbInfo( ENV )
case dictType
+ when :gdbm
+ # GDBMに辞書が投入済みか確認する
+ ok = checkJisyoIsInstalled( dictType, GDBM_FILE )
+ unless ok
+ # tsvファイルをuploadする
+ STDERR.printf( "Info: Uploading...\n" )
+ cmd = sprintf( "sekka-jisyo restore %s %s", TSVFILE, GDBM_FILE )
+ STDERR.printf( "Command : %s\n", cmd )
+ system( cmd )
+ end
+ STDERR.printf( "Info: [OK]\n" )
+ dictSource = GDBM_FILE
+
when :tokyocabinet
# TokyoCabinetに辞書が投入済みか確認する
ok = checkJisyoIsInstalled( dictType, TC_FILE )
unless ok
# tsvファイルをuploadする