Railsハイパー実践講座
                           第35回NaCl勉強会

                             中村 成洋
                          ネットワーク応...
今日お話しすること
 細かすぎて本には書かれていない内容
 ハイパーでアチョーな実践的なテクニック
 来年には使えないテクニック多数
 Tips22連発
 適宜ツッコミ歓迎




                       1/27
jsはprototype.jsを使うこと
  jqueryに対応していない
  Rails3だと切り替えられるらしいとの風の噂




                            2/27
fixtureは使うな
  必ず破綻します
  machinistやfactory_girlを最初から導入するこ
  とを強くお勧め
    ただし、小さいアプリでは気にする必要はない

  画像アップロードのテストがしづらい
  marsでは...
mock,stubライブラリを使え(た
だし適材適所)
 ところ構わず使わないこと
 ここをだましたいって時に使うべし
  グローバルな情報を修正したい場合。
  例:クラス内のメソッド書き換え、Time.nowの値を変え
  たいとか

 m...
マスタデータのロードには
seed.rbを使う
 rake db:setup の際に呼ばれる
 DBマスターデータ等々、アプリケーションに必要
 なデータはここで読ませると良い




                         5/27
STIはロードではまる
 STIはテーブルが存在しないクラスができてしま
 う
 requireを書いた方が良いかも(要確認ですが)




                         6/27
ポリモーフィックアソシエーショ
ンはソートではまる
 ソート画面があったら注意
 STIの方が好ましい
 ポリモーフィックアソシエーションだと処理が煩雑
 になる




                       7/27
プロジェクト専用のscaffoldを
作るべし
 コントローラや、viewがある程度似てくる
 共通化は出来ない程度
 ミスの大量生産に注意




                         8/27
確認画面でセッションは使うな
 色々とはまる
 いつクリアする?とかとか




                9/27
polymorphic_urlを使え
  STIやポリモーフィックアソシエーションでコント
  ローラのURLが変わってしまうとき
  意外と知らない人が多い




                         10/27
g,nをデバッグ時に使う
 Macなら g
 Linuxなら n




               11/27
困ったらrailsのソースコードを
引くこと
 すぐ引けるようにしておくことが大事
 gemも同様




                     12/27
attr_accessible,
attr_protectedを忘れずに
  :user_id, :xxx_id には attr_protected しておい
  た方がセキュア
  まあ、そういう使い方をコントローラでしなければ
  問題ない...
boolean型の名付け方
 is_xxx は辞めよう
 usable みたいなのがいい
 モデルにはusable?メソッドが自動で定義される




                        14/27
gemのバージョンは絶対指定し
ろ
 environment.rbに必要なgem記述
   絶対バージョン指定する

 不意にバーションが上がって最悪の自体
 どのバージョンを使っているかわからなくなる




                ...
レコードは親、子供の順でセー
ブする
 Railsの仕組み上、そうできている




                      16/27
親、子供を一つのアクションで
保存するときは auto_save を
使え
 has_many :xxx, :auto_save => true
 親が保存されると子供も保存される
 valid? の時に子供に対して valid? が届く
 こ...
accepts_nested_attributes_f
orを使うべし
  便利




                        18/27
count,size,lengthの違いは常
に意識して
  件数のみ取得したい
   size
      カウンタキャッシュの使用
      すべてロード済みの場合、配列の個数。駄目な
      場合、SQLのCOUNT文。ロードはしな...
count,size,lengthの違いは常
に意識して
  件数取得後、色々と操作
   length
   DBからロード済みであれば配列の件数、なければDB
   から実際にロードする
   子要素の中身をその後使用する際に使う。



...
counter_cacheの使い所
 子レコード数でソートするときなんかに使う
 それ以外は全く使う必要なんかない
 親を先にセーブしとかないと駄目
 条件も指定できない(これはとんでもなく酷い)
   カラム名を規則に合わせて、自分でカウント...
form_forのpost,put
  @xxx が new_record? だと自動的にpostにな
  る
  それ以外は put
  アレ、正しいアクションに飛ばない?って時は大体
  コレを疑う




                ...
rvmの勧め
 通常のrubyスクリプトはパッケージの物を使いた
 い(当然!)
   他のパッケージとの兼ね合いもあるしね

 patch-levelは上がっていく
   その版の最新のものを使いたい

 project毎の .rvmrc !...
お勧めplugin,gem
 ruby-toolboxを見るべし
   http://ruby-toolbox.com/




                              24/27
enum_columnプラグインの紹
介(拙作)
 フラグを扱いたい
  例 :publiced, :private, :member_only
  けどテーブルにするまでもない




                            ...
実例
おわり
Upcoming SlideShare
Loading in …5
×

Railsハイパー実践講座-第35回NaCl勉強会

3,526 views

Published on

Published in: Technology
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,526
On SlideShare
0
From Embeds
0
Number of Embeds
436
Actions
Shares
0
Downloads
13
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

Railsハイパー実践講座-第35回NaCl勉強会

  1. 1. Railsハイパー実践講座 第35回NaCl勉強会 中村 成洋 ネットワーク応用通信研究所 Powered by Rabbit 0.6.2
  2. 2. 今日お話しすること 細かすぎて本には書かれていない内容 ハイパーでアチョーな実践的なテクニック 来年には使えないテクニック多数 Tips22連発 適宜ツッコミ歓迎 1/27
  3. 3. jsはprototype.jsを使うこと jqueryに対応していない Rails3だと切り替えられるらしいとの風の噂 2/27
  4. 4. fixtureは使うな 必ず破綻します machinistやfactory_girlを最初から導入するこ とを強くお勧め ただし、小さいアプリでは気にする必要はない 画像アップロードのテストがしづらい marsでは手動テスト用のテストデータとして fixtureを利用 3/27
  5. 5. mock,stubライブラリを使え(た だし適材適所) ところ構わず使わないこと ここをだましたいって時に使うべし グローバルな情報を修正したい場合。 例:クラス内のメソッド書き換え、Time.nowの値を変え たいとか mock,stubの違いは自分で調べるべし 4/27
  6. 6. マスタデータのロードには seed.rbを使う rake db:setup の際に呼ばれる DBマスターデータ等々、アプリケーションに必要 なデータはここで読ませると良い 5/27
  7. 7. STIはロードではまる STIはテーブルが存在しないクラスができてしま う requireを書いた方が良いかも(要確認ですが) 6/27
  8. 8. ポリモーフィックアソシエーショ ンはソートではまる ソート画面があったら注意 STIの方が好ましい ポリモーフィックアソシエーションだと処理が煩雑 になる 7/27
  9. 9. プロジェクト専用のscaffoldを 作るべし コントローラや、viewがある程度似てくる 共通化は出来ない程度 ミスの大量生産に注意 8/27
  10. 10. 確認画面でセッションは使うな 色々とはまる いつクリアする?とかとか 9/27
  11. 11. polymorphic_urlを使え STIやポリモーフィックアソシエーションでコント ローラのURLが変わってしまうとき 意外と知らない人が多い 10/27
  12. 12. g,nをデバッグ時に使う Macなら g Linuxなら n 11/27
  13. 13. 困ったらrailsのソースコードを 引くこと すぐ引けるようにしておくことが大事 gemも同様 12/27
  14. 14. attr_accessible, attr_protectedを忘れずに :user_id, :xxx_id には attr_protected しておい た方がセキュア まあ、そういう使い方をコントローラでしなければ 問題ないけど 13/27
  15. 15. boolean型の名付け方 is_xxx は辞めよう usable みたいなのがいい モデルにはusable?メソッドが自動で定義される 14/27
  16. 16. gemのバージョンは絶対指定し ろ environment.rbに必要なgem記述 絶対バージョン指定する 不意にバーションが上がって最悪の自体 どのバージョンを使っているかわからなくなる 15/27
  17. 17. レコードは親、子供の順でセー ブする Railsの仕組み上、そうできている 16/27
  18. 18. 親、子供を一つのアクションで 保存するときは auto_save を 使え has_many :xxx, :auto_save => true 親が保存されると子供も保存される valid? の時に子供に対して valid? が届く この際に validates_association は使わないこ と 17/27
  19. 19. accepts_nested_attributes_f orを使うべし 便利 18/27
  20. 20. count,size,lengthの違いは常 に意識して 件数のみ取得したい size カウンタキャッシュの使用 すべてロード済みの場合、配列の個数。駄目な 場合、SQLのCOUNT文。ロードはしない。 count ロード済みでもSQLのcount文を発行する。ロー ドはしない。(件数の後、色々操作したい) 19/27
  21. 21. count,size,lengthの違いは常 に意識して 件数取得後、色々と操作 length DBからロード済みであれば配列の件数、なければDB から実際にロードする 子要素の中身をその後使用する際に使う。 20/27
  22. 22. counter_cacheの使い所 子レコード数でソートするときなんかに使う それ以外は全く使う必要なんかない 親を先にセーブしとかないと駄目 条件も指定できない(これはとんでもなく酷い) カラム名を規則に合わせて、自分でカウントアップ、ダウ ン処理を作ることで回避 21/27
  23. 23. form_forのpost,put @xxx が new_record? だと自動的にpostにな る それ以外は put アレ、正しいアクションに飛ばない?って時は大体 コレを疑う 22/27
  24. 24. rvmの勧め 通常のrubyスクリプトはパッケージの物を使いた い(当然!) 他のパッケージとの兼ね合いもあるしね patch-levelは上がっていく その版の最新のものを使いたい project毎の .rvmrc !! 23/27
  25. 25. お勧めplugin,gem ruby-toolboxを見るべし http://ruby-toolbox.com/ 24/27
  26. 26. enum_columnプラグインの紹 介(拙作) フラグを扱いたい 例 :publiced, :private, :member_only けどテーブルにするまでもない 25/27
  27. 27. 実例
  28. 28. おわり

×