ShootingStar

ruby で comet を利用した Web アプリを作成しようと思い,調べてみると,ShootingStar というコメット対応サーバがありました.
(ちなみに,Java だと Tomcat6 で CometProcessor や CometEvent を使う)

とりあえず動かす

とりあえず,チュートリアルを.

Making A Chat System Within 5 Minutes
http://shooting-star.rubyforge.org/wiki/wiki.pl?Making_A_Chat_System_Within_5_Minutes


OS:ubuntu 8.04
ruby:1.8.6
rails:2.0.2 (たぶん.この記事を書く前に update しちゃったんでうろ覚え.)

つまずき 1

shooting_star init

shooting_star が見つからなかったので,とりあえず

/var/lib/gems/1.8/bin/shooting_star init

でしのぐことに.

つまずき 2

config/database.yml
チュートリアルのままではエラーになったので,以下のように修正.

development:
  adapter: mysql
  encoding: utf8
  database: shot_chat_dev
  username: shot_chat
  password: shot_chat
  socket: /var/run/mysqld/mysqld.sock
  shooting_star:
    server: localhost:8080
    shooter: druby://localhost:7123
    random_subdomain: false


ちなみに,修正前だと

"shooting_star"=>
{"shooter"=>["druby://localhost:7123"],
"server"=>["mydomain:8080"],
"random_subdomain"=>false}

で,修正後だと

"shooting_star"=>
{"shooter"=>"druby://localhost:7123",
"server"=>"localhost:8080",
"random_subdomain"=>false}

となる.

つまずき 3

開発環境には Rails 2.0 が入っているため,ActionController::InvalidAuthenticityToken が発生しました.
以下のページに詳細が紹介されており,非常に助かりました.

今回はサンプルとしてローカルで動かすだけなので,スキップしておくことに.

class ChatsController < ApplicationController
  layout 'chats', :only => 'index'
  skip_before_filter :verify_authenticity_token
  def index
    @chats = Chat.find(:all).reverse
...

つまずき 4

Rails2.0 では scaffold_resource → scaffold なので,

./script/generate scaffold chat name:string message:string

動いた!

無事動きました.
この後,ShootingStar のコードを読んでみようと思います.


そういえば,よく考えたら Rails 使ったの今回が初めてだ...
(ActiveRecord だけとかなら使っていたけど)