Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
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,636 views

Published on

Published in: Technology
  • Be the first to comment

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. おわり

×