ももにゃんのチラシの裏的Blog NEW
「チラシの裏にでも書いとけ!!」っていうくらいの雑記。2010年から一行日記を書いてみる。長文はmixiにて公開中。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。





PG的覚書~RubyOnRails&Web開発ではまったw

年度末でひと段落着いたプロジェクトのなかで今後もはまりそうな話を覚書。

・Windowsじゃログのローテートが起きない。
ことの発端はExcelファイルを出力すると3回目で毎回500のエラーで落ちるという怪奇現象から。
最初は出力関係でのエラーを疑っていたのだが、ログをチェックしているとどうもローテーションに失敗している雰囲気。ネットであまり情報はなかったのだが、Rails標準のLoggerではWindowsだとローテーションしてくれない見たいです。
http://park8.wakwak.com/~d-world/archives/000452.html

マジありえねーw Linusは無問題。ちなみに「帳票出力3回目」ではなくログローテションサイズがたまたま3回目で超えるだけの話。

・IEとFireFoxの違い。
昔でいう、「IEとNSの違い」なわけですが、どうにもこれが解消されないですねぇ。今まで以上にブラウザの種類は増えているのですが、やっぱり2大巨頭は無視できません。

まずは、これはIEでのみ起こる現象。
HTMLで<select>タグを書くときに
<select>
<option>1</option>
<option>2</option>
<option>3</option>
</select>
と書きますが、このときに中身の<option>だけある条件にもとづいて書き換えたいときってあるじゃないですか。それで、Railsのoptions_for_selectメソッドを使ってinnerHTMLで書き直そうしたのだが出力されない。。。
どうも、IEだと<select>ごとの書き換えはOKなのだが、中身だけというのはダメらしい。結局、selectメソッドで書き込むことに。別にどっちでもいいっちゃーいいんだけど、同じ<select>タグ毎度書くのもねぇ。

逆にFireFoxでのみ起こる現象としては、スタイルシートの問題。同じスタイルシートなのに、FireFoxだけレイアウトが崩れる。仕様の問題なんだけど、何が悪いのが検討つかん。。。

・Railsのproductionモードとdevelopmentモード
先日リリースしたときに見事、エラーによりおちた。。。orz
その原因がproductionモードとdevelopmentモードの違いだったということです。

大まかにいうと
development⇒開発モード。サーバの再起動せずともソースを毎回読み込んでくれる。その代わりレスポンス悪い。
production⇒運用モード。ソースの再読み込みにはサーバを再起動する必要あり。その代わりレスポンス良し。

それに加えて、モデル名の指定をシンボルで書いていたことが影響。とあるところでモデル名の指定をしていたんですが、シンボルだとパッケージの指定がうやむやになってしまうのか、うまく動かないことが判明。
/model/hoge/TableName.rbを使いたいときに
:model => :table_name
じゃなくって
:model => "Hoge::TableName"
と、書けばよいみたいです。。。てか、developmentではどっちでも動くもん!!こんなんわかるかい(ノ`Д´)ノ彡== ┻━┻

本来ならこんなことで動作に違いがあってはいけないとおもうのですが、実際に起こってしまったのでしょうがない(--;


さらに、helperに記述してあるprivateメソッドがたまに認識しなくなる。。。このたまに、って言うのがポイントでしかも、サーバによっては100%起こる…そもそも、今回の場合はprivateである必要がないメソッドなのでpublicにしたんだけれども…

Javaとrubyでprivateの影響範囲が違ってわからん。さらにメソッドごとの明示する必要がなく一箇所で宣言するとその下全部が引きずられてしまう。例えば
Javaだと
 

 public int getID()
 {
 }
 private int getData()
 {

 }



なんだが、rubyの場合

 private
 def getID

 end
 def gatData
 end


とかくと、getDataメソッドもprivateになっちゃうのよ(--; 「とりあえず、「追加だから一番したにいれとくか」とかやっちゃうと今回みたいにprivateでとられちゃったりする。。。ぬぅ。

#ちなみにrubyでは返り値は必ずあるものなので、宣言で書く必要がないし、複数でもいいし、型も全然気にしないという緩い仕様ですw だからオーバーロードって概念がないんだよね。これがいいのか悪いのか。。。

もうちょっと勉強しておく必要があるなぁ。




この記事へのコメント
名前
メール
URL

password
管理者にだけ表示を許可

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。