login の webcalendar への盛り込み

ハマっています。連投。

generator と plugin どっちにすべぇか、と思ったが、テーブル作成その他モロモロで plugin の方がイケてると判断。webcalendar とマージしてみます。
で、その前に webcalendar なんですが、svn co した rails が 1.1.2 でして、理由まで追っかけていないんですが ./script/plugin がウマく動作しませんでした。で、gem で rails の 1.1.6 を取得しまして、再度作り直しを。
# なんか svnrails 使ってたのが悪いのかなぁ。
# ちなみに config/environment.rb の RAILS_GEM_VERSION を 1.1.6 に
# してみたけれど NG。(当たり前

rails 1.1.6 な webcalendar の製造なログは略。
# ってか、明らかに DRY に反してるな。何度同じコトやりゃ良いのやら。

って test が動かねぇし。(困

rails が作った event_controller_test.rb も。

$ ruby test/functional/events_controller_test.rb 
/usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/routing.rb:49:in `test_condition': Valid criteria are strings, regular expressions, true, or nil (ArgumentError)
        from /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/code_generation.rb:228:in `check_conditions'
        from /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/code_generation.rb:226:in `check_conditions'
        from /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/routing.rb:363:in `write_generation'
        from /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/routing.rb:558:in `generation_code_for'
        from /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/code_generation.rb:19:in `indent'
        from /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/routing.rb:554:in `generation_code_for'
        from /home/rms/webcalendar/config/../config/routes.rb:27:in `each_with_index'
        from /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/routing.rb:551:in `generation_code_for'
         ... 12 levels...
        from /usr/lib/ruby/gems/1.8/gems/rails-1.1.6/lib/initializer.rb:42:in `run'
        from /home/rms/webcalendar/config/environment.rb:13
        from ./test/functional/../test_helper.rb:2
        from test/functional/events_controller_test.rb:1
$

とりあえずお買物に行って、メシ食って考えよう。

その後

試験的に新たなプロジェクトを作成して試験をしてみた所、試験が通った。ので、再度 webcalendar を丁寧に作成してみる。

  • webcalendar プロジェクト作成
  • database.yml 修正 (development と test)
  • ./script/generate model event 実行
  • db/migrate/001_create_events.rb 修正
  • rake migrate 実行
  • test/unit/event_test.rb 実行
  • ./script/generate scaffold Event 実行
  • test/fixtures/events.yml 作成
  • test/functional/events_controller_test.rb 実行
  • ./script/generate controller callendar 実行
  • app/helpers/calendar_helper.rb 作成
  • app/views/layouts/application.rhtml 作成
  • public/stylesheets/calendar.css 作成
  • scriptaculous のコピィ
  • app/controller/calendar_controller.rb の修正
  • test/functional/calendar_controller_test.rb の修正
  • app/views/calendar/index.rhtml の作成
  • app/views/calendar/_cal.rhtml の作成
  • test/functional/calendar_controller_test.rb 実行
  • public/index.html のリネイム
  • config/routes.rb の修正
  • test/integrate/calendar_test.rb の作成
  • test/integrate/calendar_test.rb 実行

む。ここで現象が出た。

  map.connect '', :controller => 'calendar', :action => 'index', :year => Date.today.year, :month => Date.today.mon

上記を挿入すると

/usr/lib/ruby/gems/1.8/gems/actionpack-1.12.5/lib/action_controller/routing.rb:49:in `test_condition': Valid criteria are strings, regular expressions, true, or nil (ArgumentError)

map.connect では年月ブランクで OK なようにコントローラを修正してみたらどうか。

config/routes.rb

  map.connect '', :controller => 'calendar', :action => 'index'

app/controllers/calendar_controller.rb (の一部)

  def index
    @params[:year] ||= Date.today.year
    @params[:month] ||= Date.today.mon
    @year = session[:year] = @params[:year].to_i
    @month = session[:month] = @params[:month].to_i
    @databinder = getDatabinder
  end

もしかしてこんなのアリ??

    @year = session[:year] = (@params[:year] ||= Date.today.year).to_i

後で試してみよう。
で、試験してみたら test/integration/calendar_test.rb で試験が通らん。session に値が引き継がれていない。どーなってるんだ ...

どっかに routes がバグっていた、という事が書かれていたが、その影響ですか??