2007年10月10日水曜日

テーブルが作れるようになった・・・先週からの続き。

MySQLのデータベース権限を指定してあげることでrake db:migrateにて
テーブルが作れるようになった・・・先週からの続き。
スケジューラーのチュートリアルを完成させようと思います。

が、scaffoldでMVCを構築してもらい、「 $ rake 」でテストをしたら
出ました エラー ・・・ 涙




$ rake
(in /home/b-tech01/scheduler)
/usr/bin/ruby1.8 -Ilib:test "/usr/lib/ruby/1.8/rake/rake_test_loader.rb" "test/unit/schedule_test.rb"
Loaded suite /usr/lib/ruby/1.8/rake/rake_test_loader
Started
.
Finished in 0.051288 seconds.

1 tests, 1 assertions, 0 failures, 0 errors
/usr/bin/ruby1.8 -Ilib:test "/usr/lib/ruby/1.8/rake/rake_test_loader.rb" "test/functional/schedules_controller_test.rb"
Loaded suite /usr/lib/ruby/1.8/rake/rake_test_loader
Started
EEEEEEEE
Finished in 0.066953 seconds.

1) Error:
test_create(SchedulesControllerTest):
StandardError: No fixture with name 'first' found for table 'schedules'
/home/b-tech01/scheduler/config/../vendor/rails/activerecord/lib/active_record/fixtures.rb:489:in `schedules'
./test/functional/schedules_controller_test.rb:15:in `setup_without_fixtures'
/home/b-tech01/scheduler/config/../vendor/rails/activerecord/lib/active_record/fixtures.rb:562:in `setup'

−−−− 略 −−−− 同じエラーが8つ −−−−

8 tests, 0 assertions, 0 failures, 8 errors
/usr/bin/ruby1.8 -Ilib:test "/usr/lib/ruby/1.8/rake/rake_test_loader.rb"
rake aborted!
Test failures




エラーで該当している箇所を見ても、もちろん追いきれなかったので、
『StandardError: No fixture with name 'first'』をググってみた。

Railsのテストが通らない場合


上記URLの " その一 " を実行したら 即、解決! 

> scaffoldを利用した場合、test/fixturesフォルダにfixtureされるymlファイルが生成されます。
> が、なぜかこのファイル内に :firstがうめこまれていないのです。それなのにテストコードのほうは
>
> @first_id = hogehoges(:first).id
>
> で、:firstを探しにいっているので見つからずにエラーになるわけです。不思議ですねぇ

本当に、不思議ですねぇ。
無事表示ができるようになったところで教本の通り、
『一覧表示画面のカスタマイズ』をしてみます。

まず最初のエラーは、簡単なsyntax error
schedules_controller.rbに追記する際に「 , 」を忘れていた。

そして次。
テスト用のデータベースにデータを入れるため/test/fixtures/schedules.ymlに




schedule1:
id: 1 
 datetime: 2007-10-10 12:00
 title: 勉強1
 content: 今日も勉強1
schedule2:
 id: 2
 datetime: 2007-10-11 12:00
 title: 勉強2
 content: 今日も勉強2




と記述するものの、やはりエラーーーー

Fixture::FormatError: ../test/fixtures/schedules.yml. Please note that YAML must be consistently indented using spaces. Tabs are not allowed.

ArgumentError: syntax error on line 3, col 10: ` datetime: 2007-11-11 12:43:00'

tabは使ってないから大丈夫。・・・と思っていたら、
記述した「 id: 1 」の前にスペースを入れ忘れていた・・・




schedule1:
id: 1 ←←← スペースが入ってない!
 datetime: 2007-10-10 12:00
 title: 勉強1
 content: 今日も勉強1




このケアレスミス、一人だったらほぼ気づけないと思う(汗


そして、現在MySQLの日本語文字化けと格闘中。

● [MySQL] 文字化け問題を本気で直す

を参考にしてみるが、現在もまだ文字化け「????」中。
SQLite3にして先に進んだ方が良いかなぁ・・・とは思いつつも
MySQLでやってみてエラーをたくさん経験して、今のうちに
自分が弱いところなどを知るのも良いかと思ってます。

でも、明日で最後にするつもりです・・・
さきほどまでコマンドプロンプトで作っていたプロジェクトを
Aptanaにインポートしてやっていて、rakeフォルダの中にrakeフォルダ・・・
と意味の分からないことになっていたのが気になっていたので、
Aptanaで最初から同じところまで作ってrakeでテストしました。

・・・が、やはり文字化けしてました。

今日はここまでで、明日頑張ります。
でも、Aptanaの使いかたが分かりつつあるので
無駄ではない!ハズ・・・

0 件のコメント: