« TCPモニタでSOAP通信をチェック | トップページ | このブログについて »

2007年9月20日 (木)

Subversion Update するCGI

Subversion Update するCGIというのは、結構便利だ。

ということで、学習をかねてRuby で書いてみた。

作ったもの


#!/usr/local/bin/ruby -Ku
require 'cgi'

# setting env for subversion -------------------
ENV['LC_MESSAGES']='en'
ENV['APR_ICONV_PATH']='C:\usr\local\iconv'

# HTTP header ----------------------------------
cgi = CGI.new
print cgi.header({"Content-Type" => "text/html", "charset" => "utf-8"})

# HTML -----------------------------------------
puts '<html><body>'
puts ' <link rel="stylesheet" type="text/css" href="../css/admin.css">'
puts '<h4>Repository Status</h4>'
# SVN INFO
puts '<pre>'
puts `svn info --username username --password password ./path`
puts '</pre>'

puts '<form>'
puts '<form><input type="button" onclick="history.back()" value="back"/>'
puts '</form>'
puts '<h4>Update Log</h4>'

# SVN UPDATE
puts '<pre>'
puts `svn update --username username --password password ./path`
puts '</pre>'

puts '<form>'
puts '<form><input type="button" onclick="history.back()" value="back"/>'
puts '</form>'
puts '</body></html>'

学んだこと
Ruby 的なポイントは、
1.コマンド出力(` `) の使い方と
2.環境変数の設定方法(ENV['FOO']='BAR')
SVN的なポイントは、以下2つの環境変数。

ENV['LC_MESSAGES']='en'
ENV['APR_ICONV_PATH']='C:\usr\local\iconv'

LC_MESSAGESはコマンドを打ったときに帰ってくるメッセージのロケール設定で、
APR_ICONV_PATHは(subversionが使っている)ICONVのパスを指定するもののようだ。

前者を de_DEにすればドイツ語になり、ja_JP.SJIS等にすれば日本語になる。
後者を設定しないと日本語の文字が以下のように化けまくる。(Windows環境のみか?)

?\228?\092?\214?\131 ...
 (上記数字はウソ、サンプルとして適当な数字かいてます。)

utf-8な日本語が十進数に化けると、こんな数字になるっぽいですな。

環境変数APR_ICONV_PATHが設定されていないと、
Iconvがちゃんと使われないとかなんとかで、
Svnから出てくる段階ですでに化けていた模様。

以下理由により、原因がRuby側なのかSvn側なのか切り分けるの
に少し手間取ったけど、

恥ずかしいポカミス
恥ずかしいが一応かいておこう。ポカミスというより、自分の
根底としての技術力のなさを露呈するものでしかないが・・

最初さ、RubyCGIでの環境変数の設定方法がよくわからないでさ、
ENV['LC_MESSAGES']='de_DE' と書かずに、
`set LC_MESSAGES='de_DE'` とか書いて、
「出力ドイツ語にならんなぁ」なんてやってました。

たぶん、コマンド出力(' ')ってプロセスフォークしちゃうから・・
フォークした先で環境変数設定してもだめだよね・・きっと
 (PERLでもSHELLでもそうだよねー・・)

意味なし!あはは・・
あほですいません。

Windows Apacheの動作ユーザ
それと、SVNはapache使ってWebDAV方式で動かしているが、
文字化け問題解決前に、もう一個問題がでていた。

化けたエラーログをみてると、

[Thu Sep 20 17:47:50 2007] [error] [client 10.00.000.00] svn: Can't open file 
'..\\.svn\\lock': \x83A\x83N\x83Z\x83X\x82\xaa\x8b\x91\x94\xdb\x82...

.svn\lock 云々書いてあるので、これはパーミッションの問題か?
と思い、アパッチの動作ユーザを変えたところ、ちゃんと
動くようになりました。

Apacheの動作ユーザって、UNIX版だと、httpd.confで設定したような
気がしたが、Windowsのアパッチでは、NTのサービスのダイアログを開いて、
そこでユーザを設定するようだ。
(デフォルトではローカルシステムアカウントというやつで走行する)

そんだけ^^ 
以上メモでしたー。

« TCPモニタでSOAP通信をチェック | トップページ | このブログについて »

パソコン・インターネット」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/34023/16512489

この記事へのトラックバック一覧です: Subversion Update するCGI:

« TCPモニタでSOAP通信をチェック | トップページ | このブログについて »

Haruya's Violin

2017年10月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

最近のトラックバック

無料ブログはココログ