2008年11月24日月曜日

Redmine on GlassFish -5

えー、しつこく Redmine on GlassFish にこだわっています(笑)
(別にそれほどRedmineが好きなわけではないのですが、やり始めてしまったのでなんとなく…)


先日の Deploy 成功後、ローカライズ文字が正しく表示されなかった件について。
GlassFish QalityチームのMLに質問を投げたり、ログを調べたりと悪あがきを続けた結果、ついに原因を突き止めました。


原因:ズバリ、WARファイルにlangディレクトリが入っていなかった。


幽霊の正体見たり枯れススキ、というのはこういうことを言うんでしょうか…(--*


Redmineにはルートディレクトリの配下にlangというディレクトリがあり、この中に各国語へのローカライズ用文字列を格納したリソースファイルみたいなのが入っています。Redmineはこれらのリソースファイルを参照して画面表示などを行うため、それがなければ当然ながら正しい表示は行えません。

で、Warblerはデフォルトの状態ではこのlangディレクトリをWARファイルに含めてくれないのです。フタをあけてみれば「なーんだ」というような話ですが、RubyにもRailsにも疎い私にとって、解明まではイバラの道でした。

WarblerがWarファイルに含めるファイル/ディレクトリはWarblerのコンフィグファイル(通常rails_root/config/warble.rb)を操作して変更することができるので、langディレクトリを含めるよう修正。

こんな感じです↓
-------------------------
# Application directories to be included in the webapp.
config.dirs = %w(app config lib log vendor tmp lang)
-------------------------

しかるのちに jruby -S warble でWARファイルを作り直せば、langディレクトリがきちんと入ったredmine.warが完成です!

早速GlassFish v3 prelude にDeployしてみましょう。




…やったー、今度はきちんと表示されました!

なお、GlassFish v3を使うと、RailsアプリケーションをWAR化しないでディレクトリからそのままデプロイすることも可能、なのですが、これは今のところ上手くいっていません。
デプロイまではできるのですが、なんだかよく分からない例外がスローされて画面が出てきてくれないのです。

まぁ、こちらもきっと私が何かを見落としているのでしょう…(-。-
地道に頑張りたいと思います。

2008年11月22日土曜日

工人舎SR買いました♪

ちょっと前から欲しかったモバイルミニパソコン。

携帯性を取るか機能を取るか、はたまた性能を取るかで散々悩んだ挙句、とうとう工人舎のSR8WP06というモデルを購入してしまいました。
http://jp.kohjinsha.com/models/sr/index.html

SR8WP06は、いわゆる7型のコンパクトなボディーに光学ドライブを搭載したモデル。
その分、他の7型モデルと比べると若干重くなっているのですが、通勤カバンに入れて持ち歩くのにさほどの抵抗は感じないレベルです。

セットアップ完了後にまずやったのはJavaとJRuby、そしてGlassFishのインストール。
GlassFishのGUI版コンソールが問題なく動いています :-)

ハードディスクが50MBくらいあるようなので、HudsonやMigration Tool、あとMySQLなんかも入れてみようかなと思っています。
高くて重いMS-Officeは一切インストールしないことに決めました。原稿書きは秀丸かワードパッドでやることにします。


写真はGlassFishのGUI版管理コンソールを起動した状態のSR8WP06。
隣にあるのはサイズ比較用のカロリです(タバコは吸わないもので…)



このモデル、定価は約10万円くらいなのですが、メーカー直販のアウトレット(箱破損品)が半額くらいで販売されていたので迷わずそちらをGet。
http://www.kohjinsha.com/models/outlet/sr8wp06a.html

破損というほどの破損は見当たらず、本体にも付属品にもなんら問題はありません。
まだ5台ほど残っているらしいので、購入を迷っている方はいかがでしょうか :-)

そうそう、このモデルのOSはWindows Vistaなのですが、私はあまり賑やかなUIが好きではないので視覚効果を片っ端からオフにしてみたところ、Windows2000かとみまごうばかりの古き良きデスクトップになりました。
Vistaを使うのは今回が初めてですが、色々と変わった機能もあるようなので、おいおい試していきたいと思います。
 

Reviewerさんを探しています

今日は私的なお願いです。

今、ある出版社さんからご依頼を頂いて単行本を執筆しているのですが、その本の原稿レビューをして頂ける方を探しています。

時期は今年の年末~来年の1、2月くらい。
ボリュームは、まだちょっと確定していないのですが、多分本のページにして300~400の間くらいです。テーマはJavaで、内容的にはそれほど高度なものではありません。

技術レビューのチェックとあわせて、可能な範囲での誤字脱字チェック、ユーザ視点での文章レビュー(文章としての読みやすさの検証など)といったところも見て頂けると助かります。
(ビンボーライターなのでたいしたことはできませんが、若干の謝礼は用意させて頂きたいと思っています)

詳細および条件等につきましては、以下までメールにてお問い合わせ頂ければ幸いです。
kana[dot]akmt[at]gmail[dot]com (※[dot]と[at]はそれぞれ置き換えてくださいね:-) )


※お問い合わせを頂いてからお返事を差し上げるまでに、2~3日お時間を頂く場合がございます。なお、Blogをチェックできない日がしばしばございますので、恐れ入りますがこちらへのコメントによるお問い合わせはお控えください(お返事できない場合があります)

※人数は2~3人を予定しています。

2008年11月16日日曜日

Redmine on GlassFish -4

JRuby 1.1.5 の最新版でRedmineが動いたのに気をよくして、
立て続けに Redmine on GlassFish v3 も試してみました。

結論からいうと、若干の "問題" は残されているものの、
とりあえずRedmineが動きました!

残されている "問題" については後日改めて検証することにして、
まずはRedmineをGlassFishにのせるまでの手順をご紹介しておきます。


1. warblerをインストール
ディレクトリをまるごとDeployするやり方もあるのですが、
今回はWARファイルを作って、それを配備してみます。
JRuby on Rails アプリケーションをWar化するには、
Warblerというツールを使います(GoldSpikeというのもある)。

WarblerはRubyGemsでインストールできるので、
以下のようにしてJRuby環境にインストールします。

jruby -S gem install warbler


2. warblerのconfigファイルを作成
WarblerはWebアプリケーション用の設定ファイル(web.xml)を
自動生成してくれますが、この内容に手を入れたい場合は、
Warファイルを作成する前にconfigファイルを修正します。

Warbler用のconfigファイルは、次のようにコマンドを実行して
作成します。

jruby -S warble config

⇒ /config/warble.config というファイルができる。

※Warblerがデフォルトで作成するweb.xmlファイルでは、
Railsの環境(RAILS_ENV)がproductionになっています。
開発用のデータベースしか作成していない場合は、
この部分を「development」に修正する必要があります。

# Value of RAILS_ENV for the webapp -- default as shown below
config.webxml.rails.env = ENV['RAILS_ENV'] || 'development'


3. Warファイルの作成
configファイルを修正したら、いよいよWarファイルを作成します。
これは簡単。
次のようにコマンドを実行すれば、Redmineのルートディレクトリ直下に
redmine.war が作成されます。

jruby -S warble


4. GlassFishのdomain.xmlにJRubyのパスを追加
今度はGlassFish側の設定を行います。
GlassFishのdomain.xmlの中に、Redmineの実行に使うJRubyへの
パスを設定します。

<GlassFish_Home>\glassfish\domains\domain1\config\domain.xml

というファイルを開くと、下の方に <java-config ...>というエレメントが
ありますので、この中に以下のように一行書き足します。

<java-config ....>
...................
...................
<jvm-options>-Djruby.home=C:\jruby\trunk</jvm-options>
</java-config>

※実際に使用するJRubyのインストール先フォルダを指定して下さい。

5. GlassFishを起動
これで準備は完了です。GlassFishを起動してみましょう。

asadmin start-domain

6. Warファイルを配備
GlassFishが起動したら、Redmineを配備します。
GlassFish v3 には GUIベースのかっこいい管理画面もあるのですが、
今回はめんどうなのでコマンドラインから。

asadmin deploy c:\host\redmine\redmine.war

配備完了のメッセージが出れば準備はOKです。
ブラウザに以下のURLを入力してみましょう。
http://localhost:8080/redmine/


やったー、GlassFish上でRedmineが動いた!



…と思ったら、あら?なんか表示がヘンなような…
(リソースファイルへの参照が正しく行われていない?)


少々問題は残されているものの、
エラー画面しか出なかった数日前の状況から考えれば大きな進歩です^^

というわけで、本日はここまで。

【補足】
GlassFish v3 Prelude には、JRuby on Railsアプリケーションの
配備解除が正しく行えない、という不具合が残っています。
この不具合はPreludeでは修正対象からはずされたようですが、
Finalリリースで改修されると聞いています。
https://glassfish.dev.java.net/issues/show_bug.cgi?id=6610

配備したRailsアプリケーションの配備解除は、
以下のような手順で行ってみてください。
(正規の手順ではないですが、私はいつもこうやっています)

---
1. asadmin undeploy xxxxx (xxxxxはアプリケーション名)
2. asadmin stop-domain
3. タスクマネージャなどでプロセスを強制終了
4. 以下のフォルダを手動で削除
* <GlassFish_Home>\glassfish\domains\domain1\applications\xxxxx
* <GlassFish_Home>\glassfish\domains\domain1\generated\jsp\xxxxx

2008年11月15日土曜日

Redmine on GlassFish -3

前回、JRubyでの起動に失敗したRedmine。
CRubyでは一応起動できたものの、まがりなりにもJRubyファンを
名乗っている身として、これで満足しているわけにはいきません。


さて、どうすべい…と思い悩んでいたところへ、
先日のエントリを読んで下さったという大場 光一郎氏から
「エラーについて検証してくださる」という
ありがたいメールを頂きました。

こ、こんな有名な方の目にわたくしごとき者のブログが晒されていたとは!
おそれおののきつつ(?)、つつしんでログをお送りしたところ、
大場氏の環境では特に問題なく動いたとのお返事が…

「やっぱワシが悪かったんけ!!」(←うる星やつらのランちゃん風に)


というわけで、本日は問題を解明すべく、
Redmineとがっぷりよつに組み合ってすごしました。

Redmineを新しいものに変えたり(0.7.3-->0.7-stable)、
config/environment.rb の内容をいじってみたりと
あれこれ試してみたのですが、効果ナシ…

うーん、何が原因かなー、と首をひねりつつ、ふと思い立って
「MissingSourceFile」で検索をかけてみたら、
JIRAのこんなIssueを見つけました。
http://jira.codehaus.org/browse/JRUBY-3115
http://jira.codehaus.org/browse/JRUBY-3135


この問題が直接今回のエラーに関係しているかどうかは不明ですが、
ものはためしでJRuby1.1.5を最新版にしてみるか、とtrunkから
ソースをもらってビルドし、そちらで起動をかけてみたところ、

「あらやだ!」

…というくらいあっけなくRedmineのスタートページが表示されました。
ブラボー!

大場さんのご助言に感謝しつつ、次はいよいよRedmine on GlassFishに
チャレンジしてみたいと思います。

2008年11月13日木曜日

招き猫いろいろ

今日はテクノロジーとは何の関係もない話ですが、イーコマース時代のお友達がこういうものを売っています。

ここはもともと九谷焼の器を専門に販売しているお店なのですが、ためしにチビ招き猫を売り始めたところ大人気となり、シリーズ物に育ったのだとか。
(ちなみに私も定番ちゃんいちごぐるみを持っています :-) )

和座さんの招き猫には根強いマニアが多いため、新バージョンが出るとオークション開催と同時にあっという間に完売してしまうことも…
クリスマスにはサンタバージョンが再販されるかな?とちょっと楽しみにしています♪

ちなみに現在販売されているのは、なんと黄金の招きパンダ。ひそかに買おうかどうか迷ってます。
なお、このパンダは Made in Japanプロジェクトさんのアンテナショップ、ジカバーニッポンでも販売されているというハナシなので、ミッドタウンに行かれる方はぜひ覗いてみてください。


私の地元も焼き物で有名なところなのですが、九谷焼は重厚な趣があって素敵ですよね。
個人的に緑釉を使ったものが好きなので、このフクロウにも非常に惹かれます。
近場の焼き物だと黄瀬戸というのがとても好き。茶碗やら湯のみやら色々集めて楽しんでいます。

年を取って現役を引退したら、気ままに土をこねて陶器を作りながらのんびり暮らしたいなぁ。

2008年11月7日金曜日

Redmine on GlassFish - 2

昨日のエントリの続きです。


最後にひっかかった「インデックスが長すぎて rake aborted! 」の原因は、どうやら MySQL のバグ(というか仕様?)にあったようです。
MySQLではインデックスは最大767バイトまでということになっているらしく、文字セットがutf-8だとバイト数が増えてそれをオーバーしてしまうのだとか。

原因は分かったものの、あちこち検索してみてもRedmineに絡めてその対応策を説明しているサイトが見つかりません。悩んだ末、とりあえずrakeが中断するところまでmigrationを進めておいて、その状態でMySQLのコンソールから、

alter table changeset set character set latin1;

という荒技を使ってみました。

これが正しいやり方なのかどうかはわかりませんが、これでようやく rake db:migrate が最後まで動くようになりました :-)


さて、DBの準備も整ったのでいよいよアプリケーションを起動してみよう…ということで、

jruby script/server

でWEBRickを起動。
http://localhost:3000 にアクセスしてみたところ、今度はこんなエラーが…


-------------
C:/Software/jruby-1.1.5/lib/ruby/gems/1.8/gems/activesupport-2.0.2/lib/active_support/dependencies.rb:100:in `require_or_load'
C:/Software/jruby-1.1.5/lib/ruby/gems/1.8/gems/activesupport-2.0.2/lib/active_support/dependencies.rb:60:in `depend_on'
C:/Software/jruby-1.1.5/lib/ruby/gems/1.8/gems/activesupport-2.0.2/lib/active_support/dependencies.rb:442:in `require_dependency'
C:/Software/jruby-1.1.5/lib/ruby/gems/1.8/gems/actionpack-2.0.2/lib/action_controller/dispatcher.rb:141:in `prepare_application'
C:/Software/jruby-1.1.5/lib/ruby/gems/1.8/gems/actionpack-2.0.2/lib/action_controller/dispatcher.rb:178:in `run_callbacks'
C:/Software/jruby-1.1.5/lib/ruby/gems/1.8/gems/actionpack-2.0.2/lib/action_controller/dispatcher.rb:175:in `each'
C:/Software/jruby-1.1.5/lib/ruby/gems/1.8/gems/actionpack-2.0.2/lib/action_controller/dispatcher.rb:175:in `run_callbacks'
C:/Software/jruby-1.1.5/lib/ruby/gems/1.8/gems/actionpack-2.0.2/lib/action_controller/dispatcher.rb:114:in `dispatch'
C:/Software/jruby-1.1.5/lib/ruby/gems/1.8/gems/actionpack-2.0.2/lib/action_controller/dispatcher.rb:126:in `dispatch_cgi'
C:/Software/jruby-1.1.5/lib/ruby/gems/1.8/gems/actionpack-2.0.2/lib/action_controller/dispatcher.rb:9:in `dispatch'
C:/Software/jruby-1.1.5/lib/ruby/gems/1.8/gems/rails-2.0.2/lib/webrick_server.rb:112:in `handle_dispatch'
C:/Software/jruby-1.1.5/lib/ruby/gems/1.8/gems/rails-2.0.2/lib/webrick_server.rb:78:in `service'
C:/Software/jruby-1.1.5/lib/ruby/1.8/webrick/httpserver.rb:104:in `service'
C:/Software/jruby-1.1.5/lib/ruby/1.8/webrick/httpserver.rb:65:in `run'
C:/Software/jruby-1.1.5/lib/ruby/1.8/webrick/server.rb:173:in `start_thread'
:1:in `start'
-------------------------

うーん、なんだかよく分かりませんが、何らかのモジュールの読み込みに失敗している?
自分の間違いなのかJRubyが悪いのか判断に迷ったので、思い切ってCRubyで動かしてみることにしました。

JRuby側のWEBrickを一旦とめて、

ruby script/server

でもう一度サーバを起動し、祈るようなキモチで http://localhost:3000 にアクセス。


今度は無事動きました!










デフォルトの管理者ユーザでログインしてユーザ情報を変更し、ついでにプロジェクトの新規作成などにもチャレンジしてみましたが、特に問題なく動くみたい。
CRubyでちゃんと動くということは、原因はJRubyサイドにあるのでしょうか…(それとも私が何かとんでもないポカをやらかしている?)


ともあれ、ひとまずRedmineのインストールはなんとか完了しましたので、次はいよいよRedmine on GlassFish にチャレンジしてみたいと思います(が、上記のエラーの原因がJRubyだとしたら動かないような気も…)。

Redmine on GlassFish

ちょっと前に訳させていただいたArunさんのBlogを読みつつ、Redmine on GlassFish に挑戦しています。

RedmineはRuby on Railsで作られたプロジェクト管理ソフトウェア。
GlassFishとJRubyを組み合わせればRailsアプリを動かすことができるので、RailsとJRubyの勉強も兼ねて、ちょっと触ってみようと思い立った次第です。


さて、このエントリを読むとものすご~く簡単に出来るように思えるのですが、実際にはあちこちに小さなワナが…。

まず、RedmineはRailsのバージョンを選ぶため、ダウンロードしたRedmineのバージョンによっては「Railsのバージョンがチガウ!」と怒られてしまう。Railsを入れなおすか環境設定を手直しするかで対応する必要があります。

Railsのバージョンの壁を乗り越えると、次は「database.ymlがナイよ」の試練。
「えー、そんなぁ(涙)」…とつぶやきつつconfigディレクトリをのぞいたところ、なんと database.yml が database.yml.example なんて名前で格納されている。
ナイわけです。
ファイル名をdatabase.ymlに変更し、ついでにDBユーザ名やパスワードなども編集。


続いて立ちはだかるのが、「rake db:migrate」の壁。
JRuby 1.1.4 + Rails 2.0.2 でマイグレーションを実行しようとすると、YAMLに絡んだエラーが発生するのです。調べたところ似たようなバグが1.1.2の頃にJIRAに登録されていたのですが、例外クラスの名前が微妙に違う上、「もう直ったのでクローズします」みたいなことが書いてある。

このへんの原因を追求できるほどRubyの知識は持ち合わせていないため、ヤケっぱちでJRubyのバージョンを1.1.5に上げてみたところ、とりあえず db:migrateは動いてくれました。ホッ…

ところが、マイグレーションも終わりに近づいた頃に、突如インデックスが長すぎるとかいうお叱りを受け、問答無用の "Rake aborted !"(涙)

またもや「えー、そんなぁ…」とぼやいたところで、残念ながら本日はタイムオーバー。GlassFishに乗せる以前のところで躓きまくってしまいましたが、引き続き頑張りたいと思います。

なんとなく後ろめたい気分を感じつつ、明日はCRubyを使ってRakeしてみようかな、などとも思ったりして…


とりあえず解決策が明確なものについては、Arunさんのブログ翻訳記事に追記をしておきました :-)

 

2008年11月1日土曜日

GlassFish v3 Prelude Final Build is Now Available !

待望の GlassFish v3 Prelude、ファイナルビルドがついにリリースされました♪
https://glassfish.dev.java.net/downloads/v3-prelude.html

FishCATプログラムをきっかけとしてGlassFish Qualityチームの一員となった私も、なんというか、甥っ子の入学式に立ち会う叔母さんみたいな晴れがましい気分を感じていたりします :-)


Windows版にはexe形式のインストーラが付属しているものもあり、v2に比べていろんな意味で親切になっているように思います。ぜひダウンロードして試してみてください。
Ruby on Railsアプリケーションの配備環境としてもオススメです!