From: Scott G Smith Date: 2009-10-07T16:45:51+09:00 Subject: Re: Does Ruby have a 'which' like method Rajinder, your pointer to sdoc is a good one. Thanks! It turns out the answer to my question was actually answered by me when I was taking out the trash. The answer is: Just use the debugger. When I "step into" a method, the debugger gives me the file name of that method. I demonstrate with a screendump: Tue Oct 06 23:50 /software maco$ Tue Oct 06 23:50 /software maco$ rails cars4sale create create app/controllers create app/helpers create app/models create app/views/layouts create config/environments create config/initializers create config/locales create db create doc create lib create lib/tasks create log create public/images create public/javascripts create public/stylesheets create script/performance create test/fixtures create test/functional create test/integration create test/performance create test/unit create vendor create vendor/plugins create tmp/sessions create tmp/sockets create tmp/cache create tmp/pids create Rakefile create README create app/controllers/application_controller.rb create app/helpers/application_helper.rb create config/database.yml create config/routes.rb create config/locales/en.yml create config/initializers/backtrace_silencers.rb create config/initializers/inflections.rb create config/initializers/mime_types.rb create config/initializers/new_rails_defaults.rb create config/initializers/session_store.rb create config/environment.rb create config/boot.rb create config/environments/production.rb create config/environments/development.rb create config/environments/test.rb create script/about create script/console create script/dbconsole create script/destroy create script/generate create script/runner create script/server create script/plugin create script/performance/benchmarker create script/performance/profiler create test/test_helper.rb create test/performance/browsing_test.rb create public/404.html create public/422.html create public/500.html create public/index.html create public/favicon.ico create public/robots.txt create public/images/rails.png create public/javascripts/prototype.js create public/javascripts/effects.js create public/javascripts/dragdrop.js create public/javascripts/controls.js create public/javascripts/application.js create doc/README_FOR_APP create log/server.log create log/production.log create log/development.log create log/test.log Tue Oct 06 23:50 /software maco$ cd cars4sale Tue Oct 06 23:50 /software/cars4sale maco$ script/generate scaffold Car make:string model:string yr:string exists app/models/ exists app/controllers/ exists app/helpers/ create app/views/cars exists app/views/layouts/ exists test/functional/ exists test/unit/ create test/unit/helpers/ exists public/stylesheets/ create app/views/cars/index.html.erb create app/views/cars/show.html.erb create app/views/cars/new.html.erb create app/views/cars/edit.html.erb create app/views/layouts/cars.html.erb create public/stylesheets/scaffold.css create app/controllers/cars_controller.rb create test/functional/cars_controller_test.rb create app/helpers/cars_helper.rb create test/unit/helpers/cars_helper_test.rb route map.resources :cars dependency model exists app/models/ exists test/unit/ exists test/fixtures/ create app/models/car.rb create test/unit/car_test.rb create test/fixtures/cars.yml create db/migrate create db/migrate/20091007065137_create_cars.rb Tue Oct 06 23:51 /software/cars4sale maco$ rake db:migrate (in /software/cars4sale) == CreateCars: migrating ===================================================== -- create_table(:cars) -> 0.0018s == CreateCars: migrated (0.0020s) ============================================ Tue Oct 06 23:51 /software/cars4sale maco$ Tue Oct 06 23:54 /software/cars4sale maco$ cat debug_this.rb car1 = Car.new(:make => "Chevy", :model => "Camaro", :yr => "1970") car1.save debugger cars = Car.find :all Tue Oct 06 23:54 /software/cars4sale maco$ Tue Oct 06 23:54 /software/cars4sale maco$ Tue Oct 06 23:54 /software/cars4sale maco$ rdebug script/runner debug_this.rb /software/cars4sale/script/runner:2 require File.dirname(__FILE__) + '/../config/boot' (rdb:1) c debug_this.rb:5 cars = Car.find :all (rdb:1) s /pt/r1/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/ base.rb:608 options = args.extract_options! (rdb:1) l [603, 612] in /pt/r1/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/ active_record/base.rb 603 # person = Person.find(1, :lock => true) 604 # person.visits += 1 605 # person.save! 606 # end 607 def find(*args) => 608 options = args.extract_options! 609 validate_find_options(options) 610 set_readonly_option!(options) 611 612 case args.first (rdb:1) quit Really quit? (y/n) y Tue Oct 06 23:55 /software/cars4sale maco$ Tue Oct 06 23:55 /software/cars4sale maco$ So for the Car class, its .find() method is in this file at line 608: /pt/r1/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/ base.rb