2014年7月3日木曜日

4-1 MVC以外の構成要素の扱い

 MVCもまだ理解しきれていませんがね…。
 アプリケーション内で利用するけどMVCに当てはまらないモジュールをどう扱うか。

  • モデルとして扱う
  • libディレクトリで管理する
  • 新しいレイヤーを定義する

libディレクトリ

libディレクトリには元々requireパスが設定されているので、例えばlib/tatoeba.rbというファイルがあれば、下記でインクルードできる。
require 'tatoeba'
また、libにはtasksというディレクトリがRailsプロジェクト作成とともに作られますが、ここはRakeタスクの置き場所です。ここに.rake拡張子のファイルを置けば、rakeコマンドで直接利用できる。

オートローディング

 Railsでは、クラス名、ファイル名が下記の規約に沿っていれば自動でファイルをrequireしてくれる。
  • ファイル名はスネークケースで記述し、クラス名をキャメルケースで記述する
  • クラスやモジュールのネームスペースはディレクトリで表現する
 例えば、Roll::SuperUserというクラスを参照して、それが定義されていなければroll/super_user.rbをrequireしようとし、autoload_pathsに含まれるディレクトリにも無ければエラーが発生する。
 例えてもらっても2番目の説明がよくわからない。

 autoload_pathsで設定されているデフォルトは下記のディレクトリ。
  • app/controllers
  • app/models
  • app/helpers
  • app/mailers
  • app/controllers/concerns
  • app/models/concerns
 オートローディングさせるディレクトリの追加はconfig/application.rbで行う。詳しくはp132。

新しいレイヤーの配置とオートローディング

 app以下にディレクトリを作成し、autoload_pathsを追加すれば、あとは命名規約に沿っていればそのクラスは他のコード内からすぐに使えるようになる。
 app以外でもいいらしいけど、一般的にapp以下に配置するみたい。

 はー、わかんね。

0 件のコメント:

コメントを投稿