Commit 7832b7eae23111f094af1bd333118745609d7e5c

Authored by Victor Costa
1 parent 4cefe47d

rails3: fix creation of plugins filter

This method of adding plugins filters should be refactored.
This works for now.
app/controllers/application_controller.rb
@@ -138,11 +138,11 @@ class ApplicationController < ActionController::Base @@ -138,11 +138,11 @@ class ApplicationController < ActionController::Base
138 plugins.each do |plugin| 138 plugins.each do |plugin|
139 filters = plugin.send(self.class.name.underscore + '_filters') 139 filters = plugin.send(self.class.name.underscore + '_filters')
140 filters = [filters] if !filters.kind_of?(Array) 140 filters = [filters] if !filters.kind_of?(Array)
141 - controller_filters = self.class.filter_chain.map {|c| c.method } 141 + controller_filters = self.class._process_action_callbacks.map {|c| c.filter.to_sym }
142 filters.each do |plugin_filter| 142 filters.each do |plugin_filter|
143 - filter_method = plugin.class.name.underscore.gsub('/','_') + '_' + plugin_filter[:method_name] 143 + filter_method = (plugin.class.name.underscore.gsub('/','_') + '_' + plugin_filter[:method_name]).to_sym
144 unless controller_filters.include?(filter_method) 144 unless controller_filters.include?(filter_method)
145 - self.class.send(plugin_filter[:type], filter_method, (plugin_filter[:options] || {})) 145 + self.class.send(plugin_filter[:type], filter_method.to_sym, (plugin_filter[:options] || {}))
146 self.class.send(:define_method, filter_method) do 146 self.class.send(:define_method, filter_method) do
147 instance_eval(&plugin_filter[:block]) if environment.plugin_enabled?(plugin.class) 147 instance_eval(&plugin_filter[:block]) if environment.plugin_enabled?(plugin.class)
148 end 148 end
test/functional/application_controller_test.rb
@@ -506,7 +506,7 @@ class ApplicationControllerTest < ActionController::TestCase @@ -506,7 +506,7 @@ class ApplicationControllerTest < ActionController::TestCase
506 506
507 get :index 507 get :index
508 get :index 508 get :index
509 - assert_equal 1, @controller.class.filter_chain.select{|c| c.method == 'application_controller_test_filter_plugin_filter_plugin'}.count 509 + assert_equal 1, @controller.class._process_action_callbacks.select{|c| c.filter == :application_controller_test_filter_plugin_filter_plugin}.count
510 end 510 end
511 511
512 should 'do not call plugin filter block on a environment that this plugin is not enabled' do 512 should 'do not call plugin filter block on a environment that this plugin is not enabled' do