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する