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
-~----------~----~----~----~------~----~------~--~---