module ActionController::Routingю def self.controllers_actions Routes.routes.collect do |route| route.requirements unless route.requirements.empty? end end end
но, как понимаете это из роутингов. Если в роутах не прописан контроллер/action или дефолтные есть типа :controller/:action то здесь его тоже не будет.
Второй вариант, как написали: через файлы.
On 4 ноя, 23:31, Artem Korolev <kor...@gmail.com> wrote:
Частично разобрался: экшены можно извлечь с помощью TestController* .action_methods* *Возвращает => #<Set: {"new", "index"}> *По поводу контроллеров буду искать дальше...
5 ноября 2009 г. 0:31 пользователь Artem Korolev <kor...@gmail.com> написал:
В общем получилась такая конструкция, если кому-нибудь будет полезна пользуйтесь, в development среде работает, вложенные контроллеры обрабатывает:
def ControllersActions unused = %w(rails/info rails_info application) controllers = ActionController::Routing.possible_controllers - unused result = Hash.new for i in 0..controllers.size-1 do controller = controllers[i].capitalize.split('/').inject {|name, word| name + "::" + word.capitalize} + 'Controller' result[controller] = eval(controller).action_methods.to_a end end
И еще одна доводка (забыл про контроллер вида credit_card_controller.rb)
def ControllersActions unused = %w(rails/info rails_info application) controllers = ActionController::Routing.possible_controllers - unused result = Hash.new for i in 0..controllers.size-1 do controller = controllers[i].capitalize.gsub(/\/\w/){|match| '::'+match.to_s.upcase[1].chr}.gsub(/_\w/){|match| match.to_s.upcase[1].chr}+'Controller' result[controller] = eval(controller).action_methods.to_a end end
6 ноября 2009 г. 23:44 пользователь Artem Korolev <kor...@gmail.com>написал:
> В общем получилась такая конструкция, если кому-нибудь будет полезна > пользуйтесь, в development среде работает, вложенные контроллеры > обрабатывает:
> def ControllersActions > unused = %w(rails/info rails_info application) > controllers = ActionController::Routing.possible_controllers - unused > result = Hash.new > for i in 0..controllers.size-1 do > controller = controllers[i].capitalize.split('/').inject {|name, word| > name + "::" + word.capitalize} + 'Controller' > result[controller] = eval(controller).action_methods.to_a > end > end
> В результате hash: > >> result > => {"Admin::Test3Controller"=>["new", "test3", "index"], > "Admin::User::Test4Controller"=>["new", "test4", "index"], > "TestController"=>["new", "index"], "Admin::TestController"=>["new", > "index"], "Test2Controller"=>["delete", "new", "index"]}
> 5 ноября 2009 г. 0:31 пользователь Artem Korolev <kor...@gmail.com>написал:
>> Уважаемое сообщество! >> Прошу подсказать, в каком направлении копать...
> И еще одна доводка (забыл про контроллер вида credit_card_controller.rb)
> def ControllersActions > unused = %w(rails/info rails_info application) > controllers = ActionController::Routing.possible_controllers - unused > result = Hash.new > for i in 0..controllers.size-1 do > controller = controllers[i].capitalize.gsub(/\/\w/){|match| > '::'+match.to_s.upcase[1].chr}.gsub(/_\w/){|match| > match.to_s.upcase[1].chr}+'Controller' > result[controller] = eval(controller).action_methods.to_a > end > end
> 6 ноября 2009 г. 23:44 пользователь Artem Korolev <kor...@gmail.com>написал:
> > В общем получилась такая конструкция, если кому-нибудь будет полезна > > пользуйтесь, в development среде работает, вложенные контроллеры > > обрабатывает:
> > def ControllersActions > > unused = %w(rails/info rails_info application) > > controllers = ActionController::Routing.possible_controllers - unused > > result = Hash.new > > for i in 0..controllers.size-1 do > > controller = controllers[i].capitalize.split('/').inject {|name, word| > > name + "::" + word.capitalize} + 'Controller' > > result[controller] = eval(controller).action_methods.to_a > > end > > end