Ruby on Rails
リンクや URL の HTML を生成してくれるヘルパメソッド link_to や url_for をユニットテストで使いたいことがあるかもしれない。これらは基本的にコントローラかビューのコンテキストで使うことが前提になっているから、ユニットテストではそのままでは使え…
Rails のログを見ると、各リクエストの記録の末尾に次のような行がある。 Completed in 1.08156 (0 reqs/sec) | Rendering: 0.25919 (23%) | DB: 0.78924 (72%) | 200 OK [http://foobar.com/entries/show/64343]今日は、これがどんな意味があるのか調べてみ…
file_column の内部構造についてメモ。 Rails におけるファイルアップロードの仕組みについて。 まず file_column を使わずにどうやってファイルをアップロードするのかというところから始める。Entry モデルに image というファイル用のカラムがあったとす…
file_column プラグインと言えば、普通はファイルのアップロードに使うもの。しかし、実際には既存のファイルを新システムに移行させるときなどに、ローカルにあるファイルをデータベースに登録したいときがある。たとえば、Entry モデルに image という属性…
趣旨 自動テストは重要だ。この主張に真っ向から異を唱えるひとは多くないだろう。だが実際には、テストを書くのはいささか面倒だ。特にコントローラのテスト(functional test) に苦手意識を持っている人は多いのではないか。post やら get やらいろんなメソ…
趣旨 私の心はいまだに ActiveHeart にはあるものの、世の中の趨勢はどうやら Ruby-GetText に傾きつつある模様。一念発起して Ruby-GetText を使ってみた。とりあえずやりたいことは、 フォームの Vaildation 時のエラーメッセージの日本語化 (カラム名の日…
趣旨 scaffold_generator は Rails を代表するコードジェネレータである。scaffold(足場)という名前の通り、モデル名を指定することにより、そのモデルに対する CRUD 操作を行うコントローラやビューを吐き出してくれる。 Rails 使いならば、足を向けては寝…
趣旨 script/generate はいわずと知れた Rails のコードジェネレータである。 % cd $RAILSAPP % ruby script/generate scaffold MyModelなどとして使う。このコードでは MyModel に関するコードの雛形が生成されるわけだ。 今日は、この script/generate が…
趣旨 ファイルアップロードを劇的に楽にするおなじみ file_column プラグイン。作者の Sebastian Kanthak さんは、現在 Google にお勤めの凄腕ハッカー。写真を見る限りは、なかなかのイケメンである。(日本のハッカーで誰が一番イケメンかなあ) それはさ…
ActiveRecord のアソシエーションがらみで現在格闘中である。 assciations.rb reflection.rb associations/*.rb を読んでみた。それでもすっぽり頭にコードが入ってこない。確かにいろんなことをやっているから、どうしてもコードが難しくなってしまうのはわ…
趣旨 仕事で validates_multiparameter_assignments プラグインを使う機会があったので、Multiparameter Assignment の動作原理を理解したい。このプラグインは、2007/2/31 みたいな日付データを検証エラーにしたいという意図から作られている。Multiparamet…
Rails のログ(development.log / test.log / production.log) は使いやすいが、なぜかログにタイムスタンプが吐き出されない。どうしてだろうと、つらつらと Rails のソースコードを眺めてみた。やはり ActiveSupport の clean_logger.rb でわざわざ時刻もな…
趣旨 Rails には2つの時点の間隔を概数で報告してくれる distance_of_time_in_words というメソッドがある。Rails らしいオシャレなメソッドなのだが、これを日本語化してみた。先日公開した DateHelperJa プラグインに追加する形で公開する。 % script/cons…
趣旨 任意のクラスに対して ActiveRecord 風の validation が掛けられるようになる ActiveForm plugin。便利だが、一つの問題は、としたとき、エラーメッセージの前半部が「priceは不正な値です」みたいになってしまってかっこ悪い。ActiveHeart の set_fiel…
趣旨 WEBrick で Basic 認証を行ってみる。 #!/usr/local/bin/ruby require 'webrick' include WEBrick mime_types = HTTPUtils::DefaultMimeTypes mime_types['rhtml'] = 'text/html' server = HTTPServer.new( :Port => 2000, :MimeTypes => mime_types, :…
ディレクトリインデックスを簡素化する。公開するレポジトリディレクトリの .htaccess ファイルに以下の記述を入れる。 Options +Indexes IndexOptions -FancyIndexing -SuppressColumnSorting IndexIgnore '..'後は、レポジトリディレクトリにそのままプラ…
趣旨 ActionView::Helpers::DateHelper を日本語化する。DateFormJa をプラグインとしてインストールするだけで、datetime_select,date_selectが日本語表示される。 Example: datetime_select("model", "attr") # =>"2007年 4月 29日 13時 14分" オリジナル…
趣旨 緯度経度がらみの面倒を見てくれる GeoKit が熱い。 http://earthcode.com/blog/2007/02/geokit_map_plugin.htmlGeoKit は多機能だが、今回は住所=>緯度変換を行うことに的を絞る。 試した環境 Rails 1.2.3 インストール Google Maps キーはあらかじめ …
Google Maps plugin は本家は、http://johnwulff.com/articles/2006/08/05/rails-google-map-pluginらしいが、そこに記述されているリンクからはプラグインがダウンロードできなかった。 いろいろ調べてみた結果、 % cd my_rails_app % ruby script/plugin i…
WEBRick の問題点 プラグインを自動的にインストールできる plugin コマンドにはいつもお世話になっている。このコマンドの実体は、(Rails gem home directory)/lib/commands/plugin.rb にある。ソースコードをつらつらと眺めていると、% ruby script/plugin…
Rails 作者の David Heinemeier Hansson 謹製プラグイン ssl_requirement は実によくできている。わずか40行のコード。だが、http と https の切り替えを完璧にやってくれる。ruby script/plugin install http://dev.rubyonrails.org/svn/rails/plugins/ssl_…
何がうれしいか Rails で WEBrick on SSL してみた。 基本は、ここみたいにやればいいのだが、もうちょっと標準の script/server コマンドに近いノリにしてみた。デフォルトのポートはなんとなく 3500 番にしてあるが、% ruby script/webrick_ssl --port=360…
Rails の initializer.rb に感動した。なんという美しいコード。シンプルで、柔軟で、パワフル。 Ruby と DHH の洗練されたセンスに脱帽。
Rails では require しなくても、初めてあるクラスを使ったとき、その定義をファイルを自動的にロードしてそのクラスを使えるようにしてくれるという便利な機能がある。それゆえ、たとえばコントローラのなかでモデルクラスを参照しても Ruby インタプリタか…
昨日も書いたけれども、Rails でコードを書いていてイヤになるのは、Ruby の動的な性格から、いま self が何で、使用可能なメソッド名は何かということがわかりずらいということである。そんなときこんなふうにしてみるといいかもしれない。 logger.debug "s…
Rails 使いをちょっとハッピーにする WWW SQL Designer for Rails の修正。まったく恥ずかしいが単数形のテーブルを使ったとき foreign key がきちんと自動生成されないというバグに気がついた。やれやれ。直したので使ってみてほしい。ではでは。
VMWare 上の Linux で走る Rails アプリから Host OS の Windows 上で動く MySQL につないだところ、Rails 上では日本語がきれいに出るのに、phpmyadmin で直接データベースを覗くと文字化けしている。環境は、MySQL 4.1.20 + Rails 1.2.3。 Ruby/Ruby on Ra…
WWW SQL Designer comes in handy when you try to draw database ER diagrams on the web. I have hacked the Web SQL Designer to make Ruby on Rails programmers' life easier. You can generate Rails migration script based on ER diagrams. Wnen you…
Web で、データベースの ER 図が描ける WWW SQL Designer は便利だ。Rails ユーザの利便性向上のため、次の修正を加えた。 ER 図を Rails のマイグレーションスクリプトとして出力。 テーブル間のリレーションを作るときに、自動的に生成される外部キーの名…
前回までの復習 この「ActiveRecord の歩き方 - Association 編」も今回で4回目を迎える。そもそもの疑問の始まりは、 ▼コード 1 class Entry < ActiveRecord::Base has_many :comments end class Comment < ActiveRecord::Base end というモデルにおいて、 …