上周把Advanced Rails Recipes扫了一遍,受益匪浅,尤其是关于script/console那一段,都是之前没试过的,呵呵,做个摘录。
1. Write Console Methods
在~/.irbrc定义ActvieRecord::Base.connection.select_all方法
# ~/.railsrc
def sql(query)
ActiveRecord::Base.connection.select_all(query)
end
# ~/.irbrc
if ENV['RAILS_ENV']
load File.dirname(__FILE__) + '/.railsrc'
end
这样就可以在直接在script/console下面执行sql查询
$ script/console
>> sql 'show databases'
2. Log to the console
ActiveRecord Logger
# ~/.railsrc
def loud_logger
set_logger_to Logger.new(STDOUT)
end
def quiet_logger
set_logger_to nil
end
def set_logger_to(logger)
ActiveRecord::Base.logger = logger
ActiveRecord::Base.clear_active_connections!
end
ActionPack Logger
# ~/.railsrc
require 'logger'
Object.const_set(:RAILS_DEFAULT_LOGGER, Logger.new(STDOUT))
3. Play in the Sandbox
使用sandbox参数来启动script/console
script/console --sandbox
这样所有的数据库修改都会在退出console时被恢复
4. Access Helpers
直接调用helper方法
helper.pluralize(3, 'blind mouse')
调用自定义的helper方法
helper.extends BlogsHelper
helper.archive_dates