plugin でのユーザ認証

ユーザ認証に LoginEngine を使おうとしたら, Rails 1.2 から設定が少し変わっていたのでメモ. 1.2 系からは Engine システムがうまく動かなくなったし, LoginEngine もメンテナンスは停止している.

どうも acts_as_authenticated を使うのが流行らしい.

acts_as_authenticated を使う場合

導入と設定

plugin なんで,

$ ruby script/plugin install acts_as_authenticated

で install される. install 後に表示される手順に従って

$ ruby script/generate authenticated user account

でユーザ情報を表わす User モデルと User を操作する AccountController, 付随する view と test が生成される. migration も生成されるので

$ rake db:migrate

すると良い.

詳細は acts_as_authenticated とは を参考に.

それでもLoginEngine を使う場合

現在出版されている書籍の大半ではユーザ認証に LoginEngine を使っているので.

導入

install の方法は変わらない.

$ ruby script/plugin install engines
$ ruby script/plugin install logine_engine
設定

vender/plugin 以下に配置された plugin は勝手に load される.

LoginEngine の設定自体は config/environment.rb にこれまでと同様に

# ---
# LoginEngine
# ---
module LoginEneinge
  config :salt, "hogehero"
  config :use_email_notification, false
end

みたいに記述する. だけど デフォルトで config メソッドが呼ばれないらしいので, パスを追加する.

# Bootstrap the Rails environment, frameworks, and default configuration
require File.join(File.dirname(__FILE__), 'boot')
# の下あたりに, plugin 用に PATH の追加
require File.join(RAILS_ROOT, "vendor", "plugins", "engines", "lib", "engines", "deprecated_config_support")

とする.

Migration の方法はこれまでの

$ rake engine_migrate ENGINE=login

ではなくて

$ ruby script/generate plugin_migration login_engine

とすれば良い.

Controller, Helper の設定は変わらない.

あと view で CSS を include するタグが変わっていて

<%= engine_stylesheet 'login_engine' %>

から

<%= stylesheet_ling_tag "login_engine", :plugin => "login_engine" %>

に変更になっている.

これで使える