83's

Top > Tags > Ruby

Ruby

タイトル一覧を表示 | 本文を表示

括弧の前のスペース March 26, 2009 14:13

puts ([1] + [2,3,4]).join('-')
# -> 1-2-3-4

$stdout.puts ([1] + [2,3,4]).join('-')
# -> 1
#    2
#    3
#    4
# undefined method `join' for nil:NilClass (NoMethodError)

レシーバがいると引数の括弧として見なされるのか。先にjoinとくっついてほしいところ。

yonda February 20, 2009 00:31

プログラミング言語 Ruby
まつもと ゆきひろ David Flanagan
オライリージャパン
売り上げランキング: 1618

そういえばこれも読んだ。

Rubyで作る奇妙なプログラミング言語 ~Esoteric Language~
原 悠
毎日コミュニケーションズ
売り上げランキング: 10807
おすすめ度の平均: 4.0
4 プログラミング言語の世界へようこそ!!

rescue => eでローカル変数上書き February 11, 2009 18:39

e = "example"

p e #=> "example"

begin
  raise
rescue => e
end

p e #=> RuntimeError

しかしはまることはなかなかなさそうだ。

64bitのubuntuでrubyのgd2がこけた February 01, 2009 03:56

/usr/lib/ruby/gems/1.8/gems/gd2-1.1.1/lib/gd2/font.rb:234: [BUG] Segmentation fault
ruby 1.8.6 (2007-09-24) [x86_64-linux]

あー。

Ruby 1.8.7を落としてきて2006年のruby-talkにあったパッチをあてた。

動いた。

and or && January 01, 2009 04:12

def foo
  return true and true
end
#=> void value expression(Syntax Error)

# 正しくは
def foo
  return (true and true)
end
#または
def foo
  return true && true
end

んんん、andはどんだけ弱いんだよ。

基本的にand/or派だったけど、&&/||を使うようにしようかな。文字数も少ないし。

Numeric#step October 07, 2008 00:24

step(limit) {|n| ... }

step(limit, step) {|n| ... } (ruby 1.7 feature)

self からはじめ step を足しながら limit を越える前までブロックを繰り返します。step は負の数も指定できます(省略時は 1)。また、limit や step には Float なども指定できます。

んー。

5.upto(10) { ... }

5.step(10) { ... }

が同じだったりするので、引数のstepを省略できることってそんなにうれしくなくて。

「むしろlimitのほう省略できたら良かったのにな、こっちで適当にbreakするからさ」 てことないかなぁ。

欲しいのはこんなの。

class Numeric
  def step2(step = 1, limit = nil)
    n = self
    loop do
      yield n
      n += step

      break self if limit and n > limit
    end
  end
end

以下のように書きたいなと思ってstep調べたら使えなかった、というわけです、話の発端は。

0.step2(limit) do |offset|
  books = Book.find(:all, :offset => offset, :limit => limit)
  break if books.empty?
  ...
end

数行の省略のために特定のケース持ち出して仕様に文句つけるなって感じですよね本当にすみませんでした。

File.size? October 06, 2008 23:57

FileTest.size?(filename)

filename のサイズを返します。filename が存在しない時や filename のサイズが0の時には nil を返します。

こういう振る舞いをするメソッドは便利な気もするし存在すること自体は全然いいんだけど、 名前から「?」剥奪しましょうよ。まだsize!のほうがいいよ。

とギリギリRails世代が言っております。 ひっこんでろって感じですよねすみません。

RubyのURIライブラリがクローラに最適過ぎる件 September 05, 2008 03:21

URI#+が賢いって話を以前書いたんだけど、 さらにこんな振る舞いをすることをさっき知った。

uri = URI.parse('http://fg-180.katamayu.net')
(uri + 'http://twitter.com/yazu').to_s  #=> "http://twitter.com/yazu"

ところで、//a/@hrefをぶっこ抜くと大体

/abc/def.html
ghi.html
../jkl.html
http://mno.pqr.com

という感じで形式がばらけてるんだけど、 今いるページのURIと+するだけでこれがキレイになってしまう。

current_uri = URI.parse('http://example.com/123/')

(current_uri + '/abc/def.html').to_s       #=> "http://example.com/abc/def.html"

(current_uri + 'ghi.html').to_s            #=> "http://example.com/123/ghi.html"

(current_uri + '../jkl.html').to_s         #=> "http://example.com/jkl.html"

(current_uri + 'http://mno.pqr.com').to_s  #=> "http://mno.pqr.com"

あとはこれらのURLをたどるだけですね。 あ、baseタグ使われてたら知らんよ。 絶滅したと思ってたのについこの間見たんだよなぁ。

んー、でもWWW::Mechanizeもこれくらいしそうだなぁ。

Array() September 05, 2008 02:24

Array("hogehoge")    # => ["hogehoge"]
Array(["hogehoge"])  # => ["hogehoge"]

おお。気が利くNE☆

あと

Array(nil) #=> []

だったり。

そうすると例えば「config['url']は文字列でも配列でも、不要なら指定しなくても良い」みたいな、 どんだけ優しいんだよ! って機能がこれだけで片付くことに気がついた、そんな眠れない夜。

urls = Array(config['url'])

urls.each { データ(笑)を収集 }

Date.parseでこけた January 20, 2008 19:04

ruby 1.8.5

irb(main):001:0> Date.parse('18/Jan/2008')
ArgumentError: 3 elements of civil date are necessary
        from /usr/lib/ruby/1.8/date.rb:650:in `new_with_hash'
        from /usr/lib/ruby/1.8/date.rb:695:in `parse'
        from (irb):1

ruby 1.8.6

irb(main):001:0> Date.parse('18/Jan/2008')
=> Fri, 18 Jan 2008

おおう。さっさとバージョンあげろってことか……。

irb(main):001:0> Date.parse('18/Jan/2008')
ArgumentError: 3 elements of civil date are necessary
        from /usr/lib/ruby/1.8/date.rb:650:in `new_with_hash'
        from /usr/lib/ruby/1.8/date.rb:695:in `parse'
        from (irb):1
irb(main):002:0> Date.parse('18/Jan/2008'.tr('/', '-'))
=> #<Date: 4908967/2,0,2299161>

あww とりあえずこれでお茶にごしとくかw