ユーザーエージェントでアクセスを制限
application.rb に追加。
def refuse_ua(condition=nil, &block) ret = if block block.call request.user_agent else case condition when String refuse_ua /#{condition}/ when Regexp !condition.match(request.user_agent) when Array condition.inject true do |ret, cond| ret && refuse_ua(cond) end else raise ArgumentError end end unless ret erase_redirect_results redirect_to :back rescue redirect_to :controller => 'top' end ret end def self.refuse_ua(*args, &block) if block self.append_before_filter *args do |controller| controller.__send__ :refuse_ua, nil, &block end else condition = args.shift self.append_before_filter *args do |controller| controller.__send__ :refuse_ua, condition end end end
使い方
refuse_ua 'MSIE' # IEにアクセスさせない refuse_ua ['MSIE', 'Firefix'] # IEとFirefoxにアクセスさせない refuse_ua {|ua| なんか特殊な条件 }
ちゃんと動いてる気がする。