2014年7月3日木曜日

4-2 レイヤーを追加するgemの例

モジュールとビューを橋渡しするactive_decorator

 開発の支援をしてくれる、レイヤーを追加するgemがあり、active_decoratorがその一つ。その一つ、なんてよくわかってません。
 とりあえずインストール。
#Gemfile --> gem 'active_decorator'
~/work/book_admin$bundle install
 userをscaffoldで作成してmigrateして、decoratorをオプションにして以下を実行。
rails g decorator user
 app以下にディレクトリとともに/decorators/user_decorator.rbが作成される。
 ここにメソッドを定義すればビューに渡されたモデルオブジェクトだけが呼び出せるようになる。
# coding: utf-8
module UserDecorator
  def email_link(body = nil, &block)
  if block_given?
  link_to("mailto:#{email}", &block)
  else
  link_to(body, "mail_to:#{email}")
  end
  end
end
 例えば上のように定義して、下のような感じでビューで利用する、と。細かな注意点はp137に。
<td><%= user.email_link("Send mail") %></td>
 でも、なんすかね。これっているの?あ、そうかいろんなビューで使い回すってこと?バカみたいな今更の気づき。
 あと、p135〜136にrake g scaffoldって例が載っているけど、これはrails gの誤表記ってことでいいんですよね。

Sidekiq

 WEBアプリケーションで長い時間がかかる処理には、これをバックグランドで継続しつつ非同期処理が必要になる。SidekiqとRedisが必要。(Windowsは非対応。)
sidekiqはgemで、redisはダウンロードしてシステムにインストール。Linuxのディストリビューションによってはパッケージとして用意されているらしい。Macでは用意されていないようなので、下記を参考にした。

参考:

 この処理が必要になることは、今考えているサイトでは無さそうなので、使い方はそのときにp139以降を参考にしよう。

0 件のコメント:

コメントを投稿