ben

OMÜ , Bilgisayar Mühendisliği, 13'

11 Kasım 2015 Çarşamba

rails all_controller and methods

rails uygulamanızda bulunan tum controllerin isimleri için:

Dir[Rails.root.join('app/controllers/*_controller.rb')].map { |path| (path.match(/(\w+)_controller.rb/); $1).camelize+"Controller" }


Bir controllerda bulunan methodlar için:

PostController.action_methods

Burada PostController ın type bilgisi class turundedir.


Uygulamanızdaki tum methodların listesi için

@method_list=[]

@controller= Dir[Rails.root.join('app/controllers/*_controller.rb')].map { |path| (path.match(/(\w+)_controller.rb/); $1).camelize+"Controller" }

@controller.each do |cont|
    @methods.constantize.action_methods.each do  |met| 
       method_list<<met
     end
end

    constantize' yi koymamızın nedeni cont bilgisinin type bilgisinin string gelmesi. constantize ile type bilgisini class türüne çeviriyoruz.