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アプリのモジュール
はどこに置くべきか問題
!
muryoimpl
題材
http://y-yagi.tumblr.com/post/92386974040/rails-routing-constraints
「迷ったらlib置いとけ」
ってこと?
ちょっと違うのでは…
参考意見その2
https://twitter.com/hanachin_/status/491046610839695361
参考意見その2について
• むやみにlibに置くべきではないと思う(理由は後
述)
• 個人的には、libってあまりアプリ機能に関する
ものっておくべきでないという認識
なぜか?
lib == ライブラリ
アプリ機能の拡張って
ライブラリか?
否
参考意見その2
https://twitter.com/hanachin_/status/491046610839695361
参考URL
http://blog.lunarlogic.io/2013/declutter-lib-directory/
ざっくり言うと…(1)
• libにファイル置く場合のガイドラインみたい
のって示されてないよね
• アプリのdomainに特化してないものをlibに置く
べきってBryan Helmkampが言ってた
• 基本的にアプリに関するものはサブディ...
ざっくり言うと…(2)
• Monkey patchesは lib と config/initializers に分
かれる
• lib/ext … 組込Ruby classのStringやArrayの拡張
• lib/hack … 本来あるべき...
ざっくり言うと…(3)
• libには、(そのアプリに限らず)一般に使いまわせるようなもの
を置く
• app内ファイルが直接参照しないもの
• Ruby core class や 他のライブラリ、gem の一部のみが
アクセスできるもの
• ...
ざっくり言うと…(4)
• ちょっとしたアプリ特有の設定(API keyのよう
なもの)
• libにおいてもいいけど、全体的な風潮は
config/initializers だよね(私見)
同意。
だって
ソース追うときって
機能については
app の中にあること前提
で探したりしません?
なかったら、gem の
機能かな?って思いません?
app/以下 ->
config 以下 ->
gem? or lib/以下
muryoimpl.search_path
みたいな感じ
なので
まとめ
• libには、アプリの拡張は置かない
• アプリの拡張はapp/以下の置く
• サブディレクトリ切ったらいいんだよ
• app/decorators, app/workers/ みたいな
• 読むときに混乱招かないようにするのが大事
以上。
Upcoming SlideShare
Loading in …5
×

Railsアプリのモジュールはどこに置くべきか問題 (公開版)

7,268 views

Published on

Railsアプリにおいて、自分でつくったモジュールをどこにおくべきか問題についての自分の認識をかいたもん。

Published in: Software
  • Be the first to comment

Railsアプリのモジュールはどこに置くべきか問題 (公開版)

  1. 1. Railsアプリのモジュール はどこに置くべきか問題 ! muryoimpl
  2. 2. 題材 http://y-yagi.tumblr.com/post/92386974040/rails-routing-constraints
  3. 3. 「迷ったらlib置いとけ」 ってこと?
  4. 4. ちょっと違うのでは…
  5. 5. 参考意見その2 https://twitter.com/hanachin_/status/491046610839695361
  6. 6. 参考意見その2について • むやみにlibに置くべきではないと思う(理由は後 述) • 個人的には、libってあまりアプリ機能に関する ものっておくべきでないという認識
  7. 7. なぜか?
  8. 8. lib == ライブラリ
  9. 9. アプリ機能の拡張って ライブラリか?
  10. 10.
  11. 11. 参考意見その2 https://twitter.com/hanachin_/status/491046610839695361
  12. 12. 参考URL http://blog.lunarlogic.io/2013/declutter-lib-directory/
  13. 13. ざっくり言うと…(1) • libにファイル置く場合のガイドラインみたい のって示されてないよね • アプリのdomainに特化してないものをlibに置く べきってBryan Helmkampが言ってた • 基本的にアプリに関するものはサブディレクト リ切ってそこに置こう
  14. 14. ざっくり言うと…(2) • Monkey patchesは lib と config/initializers に分 かれる • lib/ext … 組込Ruby classのStringやArrayの拡張 • lib/hack … 本来あるべきではないけどやらねーと 困るんだってやつを置く(ライブラリのバグ修正的 な) • -> これはgithubでforkして使うが一般的かな?
  15. 15. ざっくり言うと…(3) • libには、(そのアプリに限らず)一般に使いまわせるようなもの を置く • app内ファイルが直接参照しないもの • Ruby core class や 他のライブラリ、gem の一部のみが アクセスできるもの • global変数/アプリの定数/環境変数に依存しないもの • githubに置いたり、わざわざgemにするほどでもないgem の拡張
  16. 16. ざっくり言うと…(4) • ちょっとしたアプリ特有の設定(API keyのよう なもの) • libにおいてもいいけど、全体的な風潮は config/initializers だよね(私見)
  17. 17. 同意。
  18. 18. だって
  19. 19. ソース追うときって 機能については app の中にあること前提 で探したりしません?
  20. 20. なかったら、gem の 機能かな?って思いません?
  21. 21. app/以下 -> config 以下 -> gem? or lib/以下 muryoimpl.search_path みたいな感じ
  22. 22. なので
  23. 23. まとめ • libには、アプリの拡張は置かない • アプリの拡張はapp/以下の置く • サブディレクトリ切ったらいいんだよ • app/decorators, app/workers/ みたいな • 読むときに混乱招かないようにするのが大事
  24. 24. 以上。

×