Rails Code Reviewまとめ1
9月 27th, 2008 by waku
http://peepcode.com/products/draft-rails-code-review-pdf
有料のPDFですが、なかなかいいのでまとめ。Railsベカラズ集。
セッションをDB保存
間違い
デフォルトのまま。
正解
Memcachedが速いと言われるがdbとappが一緒のサーバーであればActiveRecordで十分。3つぐらいのサーバーまではActiveRecordで十分。
カスタム設定ファイルを使え
間違い
別サーバーにつなぐときにAPIキーなどをコードに書くな。
environment.rbに書いてもまだ甘い。
正解
config/config.ymlに書く
http://kpumuk.info/ruby-on-rails/flexible-application-configuration-in-ruby-on-rails/
http://blog.bleything.net/2006/06/27/dry-out-your-database-yml
繰り返す文字列には定数を使え
間違い
emailとかよく使う文字列はtypoする。この間違いを探すのは難しい。
ドメインの設定もproductionとdevelopmentでは違う。
正解
environments/development.rb、environments/production.rbに
APP_DOMAIN = ‘******’と違う設定をしておいて、
default_url_options[:host] = APP_DOMAIN
FROM_EMAIL,、DO_NOT_REPLY_EMAIL、 CUSTOMER_SUPPORT_EMAILとか
http://agilewebdevelopment.com/plugins/app_config
時間の記録はUTCで
間違い
ローカルゾーンで記録
正解
UTCで保存。ユーザーの時間に合わしやすいから。
environment.rb => config.active_record.default_timezone = :utc
MySQL => CONVERT_TZ
http://dev.mysql.com/doc/refman/5.0/en/time-zone-support.html
http://redhanded.hobix.com/inspect/showingPerfectTime.html
ActiveRecordをループの中に入れない
間違い
ループのなかにfindを入れない。
正解
:includeを使って結果をループで回す。:joinとか:selectも
http://railscasts.com/episodes/22
http://blog.jcoglan.com/includebydefault/
バイナリフィールドに気をつけろ
間違い
class CreatePhotos < ActiveRecord::Migration
def self.up
create_table :photos do |t|
t.column :caption, :string
t.column :data, :binary
t.column :updated_at, :datetime
end
end
こんなときに
def index
@photos = Photo.find :all
end
こんな事をしては駄目
正解
def self.find_all_for_listing
find(:all, :select => “id, caption, updated_at”)
end
もしくはwith_ scopeを使う。
http://agilewebdevelopment.com/plugins/scope_out
http://www.dcmanges.com/blog/21.html






