Feed on
Posts
Comments

Rails Code Reviewまとめ1

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

Leave a Reply