平衡点
2007/10/01
_ ARFixture と yaml_waml
ARFixture は, 現在の DB の内容を test/fixtures 以下へ yaml として出力するための Rails の plugin. 結構便利なんだけれども, Ruby の to_yaml は 2byte データを binary にして出力するので DB に日本語とか入っていると悲しくなります. binary にせずに出力するのが yaml_waml.
- yaml_waml
導入
yaml_waml の svn repositry の構造がちょっと変なので rename.
$ ruby script/plugin install ar_fixtures $ cd vender/plugin $ svn co http://yaml-waml.googlecode.com/svn/trunk/yaml_waml/tags/rel/0.1.0/ $ mv 0.1.0 yaml_waml
使い方
DB から fixtures へ.
$ rake db:fixtures:dump MODEL=ModelName
みたいに. migrate と組み合わせれば
$ rake db:fixtures:dump MODEL=ModelName $ rake db:migrate VERSION=000 $ rake db:migrate $ rake db:fixtures:load MODEL=Book
となって大変便利だ.
_ 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" %>
に変更になっている.
これで使える