[#42851] Object#define_singleton_method がない?? — take_tk <ggb03124@...>

たけ(tk)です

14 messages 2006/10/06
[#42852] Re: Object#define_singleton_method がない?? — Yukihiro Matsumoto <matz@...> 2006/10/06

まつもと ゆきひろです

[#42853] Re: Object#define_singleton_method がない?? — take_tk <ggb03124@...> 2006/10/06

たけ(tk)です。

[#42870] system の実行タイミングのトラブル — "Hideo Konami" <konami@...>

小波です。

18 messages 2006/10/14
[#42874] Re: system の実行タイミングのトラブル — "Hideo Konami" <konami@...> 2006/10/14

小波です。

[#42876] Re: system の実行タイミングのトラブル — cuzic <cuzic@...> 2006/10/14

cuzic です。

[#42885] apt-listbugs: soap4r での悩み — Junichi Uekawa <dancer@...>

ruby-list のみなさま、

21 messages 2006/10/16
[#42891] Re: apt-listbugs: soap4r での悩み — "NAKAMURA, Hiroshi" <nakahiro@...> 2006/10/17

-----BEGIN PGP SIGNED MESSAGE-----

[#42892] Re: apt-listbugs: soap4r での悩み — Junichi Uekawa <dancer@...> 2006/10/17

こんにちは、

[#42896] Re: apt-listbugs: soap4r での悩み — "NAKAMURA, Hiroshi" <nakahiro@...> 2006/10/17

-----BEGIN PGP SIGNED MESSAGE-----

[#42929] Re: 括弧なしsuperで引数が引き継がれない — "U.Nakamura" <usa@...>

こんにちは、なかむら(う)です。

17 messages 2006/10/31
[#42930] Re: 括弧なしsuperで引数が引き継がれない — "U.Nakamura" <usa@...> 2006/10/31

こんにちは、なかむら(う)です。

[#42931] instant rails インストール! irbを起動するには? — "Uema Tsuyoshi" <mugenkai15@...> 2006/10/31

上間といいます。

[#42933] Re: instant rails インストール! irbを起動するには? — "きむらこういち" <hogemuta@...> 2006/10/31

木村です。

[#42937] Re: instant rails インストール! irbを起動するには? — "Uema Tsuyoshi" <mugenkai15@...> 2006/10/31

上間です。

[ruby-list:42875] Re: system の実行タイミングのトラブル

From: rubikitch <rubikitch@...>
Date: 2006-10-14 12:48:10 UTC
List: ruby-list #42875
From: "Hideo Konami" <konami@kyoto-wu.ac.jp>
Subject: [ruby-list:42874] Re: system の実行タイミングのトラブル
Date: Sat, 14 Oct 2006 21:09:55 +0900

>   def initialize(psfile)
>      @ps = psfile
>      File.open(@ps)
>      @ps.puts EPS_HEADER
>   end

@psがファイル名だとすると、 String#putsがないと怒られます。

def initialize(psfile)
  @ps = File.open(psfile)
  @ps.puts EPS_HEADER
end

こう書きたかったのでしょうか?

> というふうには書けそうもないので,クローズ忘れという
> どじが発生してしまうわけです。うまいやり方はないものでしょ
> うか。

あります。
まずtestabilityを考えると Postscript.new は IO を取るといいでしょう。
IO を取ることでテスト時に StringIO を使うことができます。

また、initializeはあくまで初期化が目的なので、実際の出力はしないほうがいいと思います。
なので print_header メソッドに分けました。
書き出す時に必ず print_header を呼び出すように Postscript.for_io を
Postscript.new の代わりに使います。

EPS_HEADER = "header\n"
def honyarara() "honyarara\n" end

class Postscript 
  def self.open(psfile)
    File.open(psfile, "w") do |io|
      ps = for_io io
      yield(ps)
    end
  end

  def self.for_io(io)
    ps = new io
    ps.print_header
    ps
  end

  def initialize(io)
    @io = io
  end

  def print_header
    @io.puts EPS_HEADER
  end

  def set_color(hogehoge)
    honyarara
    @io.puts "setrgbcolor #{hogehoge}"
  end

end

require 'stringio'
io = StringIO.new
ps = Postscript.new(io)
ps.set_color('red')
io.string                       # => "setrgbcolor red\n"


file = "/tmp/a"
Postscript.open(file) do |ps|
  ps.set_color('red')
end

--
rubikitch
http://www.rubyist.net/~rubikitch/

In This Thread