-
database.ymlにERBが使えます&alias_method_chain 2007-10-15 00:00:00
今日は仕事でdatabase.ymlにERBが使えることを教えてもらった。
<% require '/etc/rails/conf/conf.rb ' %> development: adapter: <%= config.db_adpter %> database: <%= config.db_name %> username: <%= config.username %> password: <%= config.password %> socket: <%= config.db_socket %> ... (略)
としてあげて、conf.rbには
def config Class.new do def db_adpter; 'mysql' end def db_name; 'sample_development' end def username; 'test' end def password; 'test_pass' end def db_socket; '/var/run/mysqld/mysqld.sock' end.new endとしてあげるとOK。
今まではひとりで開発していたのでそれほど気にしていなかったけど、こういうやり方をすればどんな環境でもdatabase.ymlを変更する必要がないですね。
Railsでメソッドをオーバライドするときはalias_method_chainという機能が便利。
class Tsukasa def like 'バイク' end endこれに、事前に標準入力を受け付ける処理を追加してオーバライドします。
class Tsukasa def like_with_question puts "言葉を入力してください" if gets == 'nsr' like_without_question else puts "バイクじゃない" end end alias_method_chain :like, :question endlike_with_questionがlikeメソッドをオーバーライドするもので、like_without_questionががオーバライド前のメソッドを呼び出します。継承だったらsuperとか使えるだろうけど……。alias_mehod_chanはオーバライド前後のメソッドを指定してあげます。

コメント(
リンク元(126)