2008-05-01から1ヶ月間の記事一覧

県名選択をさせる場合のベストチョイス

県名選択するのにいまどきリストボックスはないし、かといってチェックボックスやラジオボタンならべるのもいまいちだよね、と思っていたところ、ジャストタイミングで素晴らしいスクリプトが公開されたので、早速、こちら(→jsmap - JavaScriptによる都道府…

〜の扱いについて

いまだに日本語のコード変換絡みで問題が残っているだなんて思いもよらなかったんですが、まだいくつか注意してやらないといけないんですねぇ。その辺りの問題は10年以上前からあったはずなので、もういい加減そんなことはと思っていたので、ちょっとびっく…

動作中のログをとる

debugger で止めて、p ??? で変数の内容見て、c で次の debugger へ、なんてことをやってましたが埒があきません。ちゃんとログとって見るべきです。 Rubyでのloggerの超簡単な使い方 require 'logger' class Hoge def initialize @log = Logger.new(STDOUT)…

RubyとERBのコメント

Railsをしばらく触らないと忘れてしまいそうなのでメモ Rubyのコメント # ...コメント...# 以降の行末までがコメント =begin...コメント...=end=begin と =end の間の行はすべてコメント。=begin と =end は1カラム目から(先頭にスペースがあっちゃダメ) ERB…

Railsのエラー

喉元過ぎれば熱さ忘れるということもあり、あとで同じようなことが起きたときに「あれ、なんだっけ?」とならないようにメモ。エラーメッセージをググって探しにくる人のためになればなおよろし。 NoMethodError (undefined method `params?' for #): ItemsC…

to_int に気をつけろ!

以下の長ったらしい文章の要点は「不用意に既存クラスにメソッドを追加すると、とんでもないところでエラーになるので要注意」ということです。RailsでWebアプリを作っていたと思ってください。最近はそれしかやってませんから。で、だんだんRubyにも慣れて…

ループ(繰り返し)

Rubyに慣れてくると each{} ばっかり使っているような気がしますが、とりあえず1回実行して後で評価する、Cでいうところの do {} while を使いたいときもたまにあります。そういうときのためのメモ。 まず、ループのまとめ for 文for 変数 in オブジェクト d…

シンボルに注意

Railsでは HashWithIndifferentAccessクラスがよしなにやってくれるので、:idでも"id"のどちらでもいいんだけど、自分で作った Hashはそういうわけにはいかないので、ちゃんと意識して使いましょう。シンボルと文字列は違います。 「文字列」=「シンボル」.…

to_iの振舞い

"123".to_i => 123 これは予想通り。 "123xx".to_i => 123 数字として判断できるところまで判断してくれるのか。 "xx123xx".to_i => 0 さすがに前に付いた数字じゃないものはカットしてくれないよね。 nil.to_i => 0 これが例外にならないのは注意! false.t…

変数への代入に気をつける

Rubyの変数へのオブジェクトの代入は、オブジェクトへの参照ができるようになるだけ(オブジェクト自体はコピーされない)ということは知識としてはわかっていたのですが、いままでそのことを意識しなくても特に問題がなかったので、Cみたいにポインタ参照なの…

メソッドの'()'に気をつける

Hpricotを使ってて、どう考えてもメソッドが使えるはずなのにエラーになるということがあって、小一時間*1>ほど悩みまくり。もう同じことで悩まないとは思うが、念のため記録しておく。 エラーになるケース irb(main):137:0> (doc/:Item).each {|item| p (it…

Railsでテーブルを作るときの注意

ActiveRecordで予約されたメソッド名をテーブルのフィールド名として使うとエラーになるので注意しましょう。 「SELECT * FROM」を使わないで、「SELECT attributes as attr FROM」というように別名を定義して使えばいいらしいですが、最初から予約メソッド…

Railsで扱う定数はどこで定義すべきか?

Railsでアプリを書いているとよくあることですが、上限値とかデフォルト値などのマジックナンバーがソースに入ってきます。そんな定数をコードの中へ埋め込むのは気持ち悪いので、どこかグローバルに参照できるところへ出しておきたいところ。 どこに置くか …

簡易的にテーブルを追加

Railsの作法に則ってやろうとすると、 モデルを作って、 migrateの差分を書いて、 テーブルを作成 というような流れになるんですが、そうすると「db:migrate」フォルダに「001_*、002_*、・・・」とファイルがどんどんできてきて、テーブルが固まってからな…

rake db:migrateでエラーになる

「rake db:migrate」をやろうとすると、こんな(↓)エラーを吐くようになりました。 PS C:\www\2.5-55.jp> rake db:migrate (in C:/www/2.5-55.jp) Error in my_thread_global_end(): 1 threads didn't exit いろいろとDB周りの定義を変更したあとだったので、…

ruby-debugの使い方

ruby-debugで自分がよく使うコマンド(しかもオプションなし)だけの抜粋です。 p 変数(式) 変数(式)を表示 pp 変数(式) pより少し見やすい形式で表示 l 次のページのソースコード表示 l- 前のページのソースコード表示 l= いまデバッグしている周辺のソースコ…

フォームの値をリアルタイムにバリデートする

いずれ使うと思うので、そのときどこを参考にすればいいかメモ。 「http://tetlaw.id.au/view/javascript/really-easy-field-validation。入力値がおかしいとエラーメッセージをフェードインさせながら表示。prototype.js依存。 「http://blog.masuidrive.jp…

InvalidAuthenticityTokenエラー

Tipsというより現象記録的なメモですが、「ActionController::InvalidAuthenticityToken」というエラーが出ることがあります。Rails2.0はデフォルトで CSRF(クロスサイトリクエストフォージェリ)対策がとられているわけですが、これに違反したときにでるエラ…

デバッガを使う

だんだんRailsに慣れてくると、途中で止めて変数の内容を見たり、ステップ実行したりというようなデバッキングがしたくなりますよね。Rails2.0では ruby-debugを使った debuggerが正式に採用されて使い方も簡単ということだったのでやってみたのですが・・・…

画像をリンクボタンにしたときの枠線を消す

やり方 <a href="index.html"><img src="logo.png" alt="indexへ" border="0"></a>imgタグのなかで、border="0"を指定する。

ルーティングの追加

map.resouceで作成されたルーティングで概ねいいんだけど、少しだけ追加したいなということがあります。そういうときのやり方です。 アクションの追加 テーブル全体の一覧を表示する indexアクションとは別に listアクションを追加する場合、「myapp/config/…

mongrelの入替え

MySQLを入替えたついでに、mongrelもupdateしておく。gem updateの手順に従っただけなんだけど、もしかするといままで mongrelは入っておらず、この操作で新規インストールされたかも。てっきり入れたとばっかり思っていたんだけど、いままで「ruby script/s…

MySQLの入替え

WindowsでRailsのテストをしているとWEBrickが吐くログファイル(myapp/log/development.log)に変なWARNINGを見つけた。 WARNING: You're using the Ruby-based MySQL library that ships with Rails. This library is not suited for production. Please ins…

db:migrate

db:migrateの使い方のまとめ。 使い方 普通の使い方 $ rake db:migrate やり直したい場合 $ rake db:migrate VERSION=0 ← すべてDROP $ rake db:migrate ← 再作成 環境を指定する $ rake db:migrate RAILS_ENV=production バージョンの整合性がとれなくなっ…

.htaccessでエラー?

Rails2.0で普通にプロジェクトを作ると「/myapp/public」に「.htaccess」が作成され、WEBrickでテストしている分には何も問題ないのですが、同じフォルダの「/myapp/public/index.html」をApacheで公開しようとすると、↓のようなエラーを吐きます。(Ubuntu7.…

Google Analyticsを入れてみる

Etc

アクセス解析ならコレということらしいので、とりあえず自分の持ってるサイト3つに、Google Marketing Platform - Unified Advertising and Analyticsを入れてみることにしました。 自分の管理するWebページ これは入れるのになんの障壁もありません。このペ…

「500 Internal Server Error」が出るときは?

Rails2.0をWEBrickでテストしているとき「500 Internal Server Error」が出ることがあります。致命的なエラーのときに出るようです。 エラーの確認 Rails(WEBrick)が「/myapp/log/development.log」にエラーを吐いているはずです。今回はDBを作らず動かして…

動いているバージョンの確認がしたいときは?

Rails1.2.6やRails2.0.2を一緒にインストールしているような環境で「あれっ、これってどっちで動いてるんだっけ?」と不安になったときの確認方法です。 確認 ネットワーク越しからはレスポンスを返さないようなので、ローカルで実行します。 xxx:~$ curl ht…

requireでエラーが出るとき

他の人が作ったオープンソースのRailsアプリを動かそうとして「in 'gem_original_require'」や「in 'require'」関係のエラーがたくさん出ることがあります。そういうときはどうしたらいいでしょうか? エラーの確認 「script/server」で WEBrickがエラーを吐…

ページ切替を使う

1ページ○行としてページごとに表示するためのプラグインがRails2.0の「will_paginate」です。これを入れてみます。 インストール こちら(→will_paginateのインストール方法が変わっていた - idesaku blog)を参考に入れてみます。 C:\www\2.5-55.jp> gem sour…