27 May '12, 3pm

Rubyのcaller()メソッドは便利だ。ここにいろいろ書いてある。http://t.co/coIMTUsI

バックトレースを扱う際の問題点と解決案 筆者は、現在の Ruby にはバックトレース関連で 2 つの問題点があると思っています。 1 つ目は、バックトレース内でファイル名や行番号がひとつの文字列に埋め込まれている点です。 caller() #=> ["ex2.rb:6:in `f2'", "ex2.rb:2:in `f1'", "ex2.rb:15"] このせいで、ファイル名や行番号を取り出すのにいちいち正規表現を使って切り出さなければならず、手間がかかるだけでなく結構な動作コストがかかってしまいます。 caller().each do |str| str =~ /(.*?):(\d+)/ filename, linenum = $1, $2 end できれば、これらを分離したまま返すようなオプションが用意されてほしいと思います。 ## たとえばこんな感じ caller!() #=> [["ex2.rb",6,"f2"], ["ex2.rb",2,"f1"], ["ex2.rb",15,nil]] 2 つ目は、呼び出し元を調べたいだけのときにバックトレースを取り出すのは重すぎるということです。たとえばログを記録するときにメソッドの呼び出し元もログに記録したい場合、そのたびにバックトレースを取り出していたのではあまりに動作コストがかかりすぎます。 def exec_sql(sql) str = caller()[0] # 呼び出し元を調べたいだけなのに、動作コストが高すぎる logger.info("#{str}: sql=#{sql}") Adapter.exec(sql) end できれば caller() の引数として、開始点の深さだけでなくバックトレースの長さも指定できればと思います。こうするとバックトレース全体を取り出す必要がなくなり、動作コストを大幅に減少できます。 depth = 1 length = 1 p caller(depth, length) #=> [["ex2.rb",6,"f2"]] 以上が、筆者が Ruby の...

Full article: http://jp.rubyist.net/magazine/?0031-BackTrace#l3

Tweets

RAA - Ruby Application Archive:

raa.ruby-lang.org 27 May '12, 12pm

2005-03-26: RAA source code search [experimental] is opened at http://raa.ruby-lang.org/gonzui/ . For more details . 2004-...

ロケールエンコーディングを取得するには、Encoding.find("locale") を用い...

jp.rubyist.net 27 May '12, 2am

なお、非 ASCII な文字を含むリテラルを magic comment なしに書いていた場合、US-ASCII ではない文字が存在しているとして、invalid multibyte char というエラーになります。これはソースコードの可搬性...

How to Learn Ruby (or any programming language)

rubylearning.com 26 May '12, 2am

How to Learn Ruby (or any programming language) This guest post is contributed by Geoffrey Grosenbach , who designs, produ...

Update your Ruby programming skills for free

rubylearning.com 26 May '12, 5am

P ast participants of RubyLearning’s Core Ruby batches can join the new 33rd Core Ruby batch starting from 26th May 2012 f...

How do i check what version of ruby and rails i...

ruby-forum.com 24 May '12, 11pm

>> What is the command to see what version of ruby and what version of >> rails i am running? >> >> Thanks in advance! >> ...

ubuntu - a great OS for Ruby developers! : Ruby...

rubyflow.com 25 May '12, 4pm

Ubuntu almost has the hardware integration I have come to expect when using my macbook compared to OS X. As far as desktop...

Using Float For Currency - Ruby Forum:

ruby-forum.com 26 May '12, 11am

> What cracks can I lose money through? Floating point numbers represent an extremely wide range of values - much wider th...

Thanks for the mention, @peterc! (If you don't ...

rubyweekly.com 24 May '12, 5pm

JRuby Core Team Members Moving to Red Hat At JRubyConf this week, it was revealed that Thomas Enebo and Charles Nutter - k...

Vermont's First Ruby Conference, July 28 - 29, ...

rubyflow.com 24 May '12, 4pm

will take place in Burlington, Vermont on July 28 - 29th. Join like-minded Ruby enthusiasts for Vermont's first Ruby confe...

Talks: gem for talking ruby and mac command-lin...

rubyflow.com 24 May '12, 7am

Talks: gem for talking ruby and mac command-line tools Posted by gazay on May 24, 2012 — 0 comments If you want to hear so...

shopsense-ruby | | your community gem host:

rubygems.org 22 May '12, 11pm

This Gem provides an easy to use interface for the ShopStyleAPI commonly known as ShopSense. ShopSense-Ruby includes a set...

Ruby Inside » About Ruby Inside:

Ruby Inside » About Ruby Inside:

rubyinside.com 18 May '12, 1pm

Other useful pages: Contact Us or Advertise With Us. What? Ruby Inside is the most popular Ruby and Rails blog attracting ...

You can now try Practicing Ruby for free for on...

rubyflow.com 23 May '12, 4pm

It's no secret that Practicing Ruby has released a ton of free content . With so much of my writing available for free, so...

Adding watermarks, credits, badges and text ove...

rubyflow.com 22 May '12, 9am

Adding watermarks, credits, badges and text overlays to images in Ruby on Rails Posted by Cloudinary on May 22, 2012 — 0 c...