To log SQL queries from Merb (from http://github.com/sam/dm-core/wikis/tips):

In Merb:

Merb::BootLoader.after_app_loads do
  DataObjects::Mysql.logger = DataObjects::Logger.new('log/dm.log', 0)
  DataObjects::Sqlite3.logger = DataObjects::Logger.new(Merb.log_file, 0)
end

On Wed, Aug 27, 2008 at 6:55 PM, dc <[EMAIL PROTECTED]> wrote:
>
> hi -
>
> is there a way to track what SQL queries DM is creating behind the
> scenes?
>
> also, any recommended ways to track down the timing around the
> queries?
> we have a spec as per the below using ruby-prof that gives some basic
> times/split between DM and merb, but its fairly rough cut. i was
> wondering what other ways people are digging into optimizing their
> apps with DM?
>
> tx,
>
> /dc
>
> ----
>
> require File.join(File.dirname(__FILE__), 'spec_helper.rb')
>
> describe Application do
>
>
>  it "should give me some profiling" do
>
>    #pending "disabling this pending line and loading the dev
> database.  run this spec alone."
>    puts "Please don't take these numbers too seriously"
>
>    require 'ruby-prof'
>
>    { :avatars => url(:controller => 'avatars', :action => 'play', :id
> => '3', :format => 'swf'),
>      :homes => url(:controller => 'homes', :action => 'user', :id =>
> '3', :format => 'swf'),
>      :quests => url(:controller => 'quests', :action =>
> 'bouncer', :id => 'entry', :guid=>'ON', :format => 'swf')
>    }.each_pair do |k,v|
>      puts "Profiling #{k.to_s}"
>
>      result = RubyProf.profile do
>        request(v, {}, {'HTTP_X_UP_SUBNO' => 'xx', "HTTP_USER_AGENT"
> => 'xx-'} )
>      end
>
>      sums = {:'DataMapper::'=>0,  :'Merb::'=>0}
>      total = 0
>
>      result.threads.values.each do |thread| thread.each do |method|
>        sums.keys.each do |klass|
>          sums[klass] += method.self_time if method.klass_name.include?
> (klass.to_s)
>        end
>        total += method.self_time
>      end; end
>
>      sums.each_pair do |klass, time|
>        puts "\t#{klass.to_s[0..4]}:\t\t#{(time/total*100).to_s[0..4]}%
> \t\t#{time.to_s[0..4]}s"
>      end
>
>      puts "\ttotal:\t\t100%\t\t#{total.to_s[0..4]}s"
>      File.open(File.dirname(__FILE__)+"/../log/
> #{k.to_s}_profile.html",'w') do |s|
>          printer = RubyProf::GraphHtmlPrinter.new(result)
>          printer.print(s, :min_percent=>3)
>      end
>
>    end
>  end
>
> end
>
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"DataMapper" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/datamapper?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to