mod_rubyはApacheにRubyインタプリタを組み込むモジュールです。CGIKitアプリケーションでmod_rubyを利用するためにはちょっとした作業が必要になります。このほかmod_rubyの設定に合わせて起動スクリプトの拡張子を変更するなどしてください。
なお、mod_rubyへの対応は実験的機能です。安定して動作する保証はありません。
mod_rubyでは複数のスクリプトで1つのRubyインタプリタを共有するため、コンポーネントの名前空間を保護しないとCGIKitアプリケーションに影響が出ることがあります。そこで、CKApplicationのサブクラスを作ってコンポーネントの名前空間を保護します。
まず、起動スクリプトとは別にファイルを作成し、CKApplicationのサブクラスを定義します(起動スクリプトでこのファイルをロードします)。サブクラス名はアプリケーションに応じて変更してください。
class Application < CKApplication end
次に、各コンポーネントをこのサブクラスの内部に定義します。
class Application class MainPage < CKComponent ... end end
CKApplicationのサブクラスはmod_rubyの対応のみに限りません。CKApplicationオブジェクトはすべてのコンポーネント間で共有されるので、CKApplicationのサブクラスにアプリケーション全体に関係するメソッドをまとめておくと有用です。
CGIKitは「アダプタ」を使ってブラウザとデータ送受信を行います。通常CGIとmod_rubyのアダプタは自動的に判断されますが、それでも判断されないときやカスタマイズしたアダプタを使う場合は、CKApplication#interface
属性でアダプタを指定してください。
#!/usr/local/bin/ruby require ‘cgikit’ require ‘application’ app = Application.new app.interface = CKAdapter::ModRuby app.run