login の webcalendar への盛り込み
ハマっています。連投。
generator と plugin どっちにすべぇか、と思ったが、テーブル作成その他モロモロで plugin の方がイケてると判断。webcalendar とマージしてみます。
で、その前に webcalendar なんですが、svn co した rails が 1.1.2 でして、理由まで追っかけていないんですが ./script/plugin がウマく動作しませんでした。で、gem で rails の 1.1.6 を取得しまして、再度作り直しを。
# なんか svn な rails 使ってたのが悪いのかなぁ。
# ちなみに 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 がバグっていた、という事が書かれていたが、その影響ですか??