2009年5月16日土曜日

Ruby on Rails どうしてもエラーの原因がわからない時には

①文字コードがおかしなことになってませんか?
②予約語を使ってませんか?

あたりをチェックしてみるといい。



文字コードがおかしなことになってませんか?


Railsが処理する文字コードはUTF-8。

ウインドウズ環境で
ruby script/generate
によるファイル生成をにより生成されるファイルの文字コードはSHIFT-JIS。

エディタで編集して保存するときにはそのまま保存するのではなくutf-8で保存するという点に注意が必要。
AptanaやEclipseなどの統合開発環境で保存するときには勝手にやってくれるみたいなのであまり意識する必要はないけど、Eclipseから軽い秀丸エディタあたりに変えた時にはまりそうなので注意しとこう。


予約語を使ってませんか?


予約語は変数名やテーブルのカラム名に使うとエラーが出る。またそのエラーがわかりにくい。
rubyの予約語、railsの予約語、SQLの予約語についてまとめる。

①Ruby予約語
BEGIN class ensure nil self when
END def false not super while
alias defined? for or then yield
and do if redo true
begin else in rescue undef
break elsif module retry unless
case end next return until

クラス名、変数名などに用いることはできないみたい。接頭辞$, @、@@が先頭についたものは予約語とは見なされないので使うことが可能。また、def のあとやメソッド呼び出しのピリオドのあとなどメソッド名であるとはっきり分かる場所ではメソッド名として用いることができる。

参考:
http://www.ruby-lang.org/ja/man/html/_BBFAB6E7B9BDC2A4.html

②rails予約語
多すぎるので参考リンクのみ。
http://wiki.rubyonrails.org/rails/pages/
ReservedWords#reserved_words_you_can_t_use


Other Names Reported to Have Caused Trouble
"トラブルが報告された他の名前"

という語も使っちゃだめらしい。

③sqlの予約語
テーブル名・カラム名にこれらの言葉を使うのはやめましょう。
http://msdn.microsoft.com/ja-jp/library/ms173340.aspx

0 件のコメント: