かばだんなさん かく語りぬ浦安で活動する株式会社シャル・システムサービスの筆頭株主が筆に任せて・・・
2010年9月 8日(水) 04:06 JST
社内システムなんかで、表題のような要望が出た事はありませんか?
まぁRails自体が下位非互換でまくりでビジネスユースが減ってしまった(少なくとも日本国内では)ので、需要はあまりないのかもしれません(苦笑。ですが公開されている情報も少ないですし、新たにDMZにApacheサーバーを立てるのは運用管理者的には抵抗があるでしょうから、ここにメモを公開します。
まず「Rails on IIS」の構成というと下図のようなイメージを持たれるのではないでしょうか?

これはFastCGI的には(確か)正確な図ではありません。あくまで概念的なイメージ図です。PHP + CakePHP の最小構成だとこうなりますよね。
でもRailsの場合これが最適とは私には思えません。少なくともビジネスユースでは。
今日はこんなお話し。
実はRails2.1が出てからもお試しぐらいはしていたのですが既存アプリは2.0.2で動かし続けていました。
それは「間違いなく すったもんだがあるに決まっている」と確信していたからです。ちなみに試行錯誤の大好きな かばだんなさんですが、現場指揮官としての座右の銘は『君子は危うきには近寄っちゃなんねぇと孔子様も仰っておられる』です。この嗅覚でここまで来ました(笑。
でもまぁ、2.1.2まで来たからもうそろそろいいだろうと思って、既存のアプリをバージョンアップしました。サーバーが起動しません(笑。Goldbergが原因でしたので対処法を記録しておきます。
さて、前回「Goldbergのメニューを携帯用にカスタマイズ」でGoldbergとjpmobileの組み合わせに味をしめた かばだんなさん、今度は前々から要望のあった「携帯での自動ログイン」を実装しました。まぁ前々から「あった方がいいなぁ」とは思っていたのですが、「やらなきゃいけない事」に忙殺されていまして
。で、このたび現実逃避のため実装しました(笑。
まぁ、Goldbergもjpmobileも「人に使われる事」を前提に実装されているので、組み合わせて使うのは結構簡単です。ここに書くまでもなく。
ただGoldbergの方はリファレンスが英語のため、とっつきにくい人はいるかもしれないと思い、コードを公開します。
久しぶりのGoldbergです。いや、意外とGoldbergでのアクセスが多いので、ご好評にお応えして、って感じで。
かばだんなさんはGoldbergのサイトを携帯でも使用しています。携帯との使い分けにはjpmobileを使用しています。両者の併存には全然問題ないですしね
。
しかし動作上は問題ないのですが、Goldbergはメニュー項目を<li></li>タグで表記しますので、携帯で見るとえらく縦に長いメニューが先頭に表示されてしまいます。
いいんです。いいんですけどね。本文を見るまでに携帯の下ボタンを連打しないといけないのには少々閉口してしまいますので、携帯用には少し表示ロジックをカスタマイズした方が良さそうです。でもGoldbergのメニュー表示のロジックは若干クセがあるので、携帯用に表示ロジックを自作してしまいました。
例えば下記の図のようなメニュー構成だとします。

今週「Railsの認証・アクセスコントロールはGoldbergが便利かも。」を書いたら、そもそも私にGoldbergを教えて下さったyonetaさんが「Goldberg再び」という文書を挙げて下さった。
その中で「認証機能を実装できない(したことがない)人は認証プラグインを使うべきではない」という御宣託がありました。まさに御宣託、全くの同感です。yonetaさんの意図とは若干異なる事を承知でさらに厳密に言うなら、「言語は何でもいいけど、Webシステムの認証・アクセスコントロールのアーキテクチャ設計をやった事のない人間はプラグインは使用しない方が良い。個人情報を重要視するサイト・現金の動きを司るサイトなら絶対使用してはいけない。」と考えています。理由は簡単。一度もこのテーマに苦しんだ事がない人にリスク計算はできないからです。これだけは断言できます。
しかし全くやった事がない人の「教材」としてプラグインを使う事には大賛成です。そもそも何に苦しまなければならないかが分かるからです。
「何に苦しまなければならないか」はここでは語れませんので、今日は「Goldbergでできる事+α」についてです。
しばらく前に「Ruby on Rails 2.0 はどうなのよ?」でRubyOnRails2.0について触れたのですが、あの後も捨てるにはあまりにも惜しかったので開発を続けておりました。
やはり最初の感想通り、アジャイルでも全然いいのですが要件が固まっていればいるほど生産性が上がります。要件が固まっている機能だとホントに『一気呵成』な感じでモノが動きますから。
で、プラグインなんかも極めて豊富ですので利用しない手はありません。
でも認証関係のプラグインは色々あるのですが、アクセスコントロール(ACL)関連となるとちょっとモノ足りません。まぁ仕方ないかな、と自作しようと思ってた矢先、yonetaさんのブログ記事「RoRとgoldbergで、ウェブサイトにアクセス権限管理機能を10分で付け」でGoldbergというものの存在を知りました。yonetaさんがいなければ間違いなくACLのコードを自分で書いていたでしょう。ありがとう、yonetaさん!!
さてこのGoldberg、要するに「認証」「ユーザー管理」「アクセスコントロール」「メニュー管理」を全部まとめたプラグインです。直近のリリースでRails2.0専用に書き換えたようですので注意が必要ですが、まぁよくまとまっています。設定に関してもブラウザから全部設定できちゃいますしね。
本日はこのGoldbergのご紹介です。
2007年12月にRails2.0がリリースされました。
同時期にRuby1.9がリリースされた事は以前触れましたが、Railsは概念だけ見てスルーしておりました。これじゃいかんとちょっと動かしてみました。