[#15357] Regexp literal and Regexp.new() — TAKAHASHI Masayoshi <maki@...>
高橋征義です。
高橋征義です。むーん、問題のありかが違ったかも。
まつもと ゆきひろです
[#15369] ruby_init_loadpath() on Windows — Shugo Maeda <shugo@...>
前田です。
わたなべです。
[#15395] UnboundMethod.bind to derived class instance — nobu.nakada@...
なかだです。
まつもと ゆきひろです
なかだです。
[#15410] pp - pretty printing — Tanaka Akira <akr@...17n.org>
さて、time.rb が片付いたので、次は pp.rb のご意見募集です。
In article <hvod71ntocb.fsf@coulee.a02.aist.go.jp>,
In article <hvo1yhuqhvk.fsf@coulee.a02.aist.go.jp>,
高橋征義です。
In article <20011224230059I.maki@rubycolor.org>,
[#15411] inconsistency of STR_ASSOC — "K.Kosako" <kosako@...>
Version : 1.7 latest (2001-12-10)
[#15418] block for MatchData#select, Hash#select — nobu.nakada@...
なかだです。
[#15430] [BUG] Segmentation fault/ruby 1.7.2 (2001-12-10) — WATANABE Tetsuya <tetsu@...>
渡辺哲也です。
[#15435] Time#utcoff — Tanaka Akira <akr@...17n.org>
In article <hvosnahj702.fsf@coulee.a02.aist.go.jp>,
まつもと ゆきひろです
わたなべです。
In article <1008292110.329151.8468.nullmailer@ev.netlab.jp>,
まつもと ゆきひろです
In article <1008320813.231850.10341.nullmailer@ev.netlab.jp>,
In article <hvosnaeblzu.fsf@coulee.a02.aist.go.jp>,
[#15441] exported symbol — nobu.nakada@...
なかだです。
[#15456] irb/completion で Segmentation fault — Kazuhiro NISHIYAMA <zn@...>
西山和広です。
まつもと ゆきひろです
On Sat, 15 Dec 2001 18:28:12 +0900
まつもと ゆきひろです
[#15464] gsub weirdness: gsub(/.*$/, "foo") — "Akinori MUSHA" <knu@...>
なんか gsub がおかしいような気がするんですが、これはこういう
青山です。
At Mon, 17 Dec 2001 05:22:53 +0900,
[#15466] listen for sockets in both IPv4 and IPv6 — Ryo HAYASAKA <ryoh@...>
早坂@北陸先端です.
[#15479] [BUG] thread with tempfile.rb — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
[#15500] Re: define_method() does not properly set noex (PR#218) — nobu.nakada@...
なかだです。
[#15505] ERb — m_seki@...
In article <20011220114249J.seki@mr.nasu.toshiba.co.jp>,
In article <m3eljr5o9m.wl@edwin.mva.biglobe.ne.jp>,
高橋征義です。
In article <20020215085405G.seki@mr.nasu.toshiba.co.jp>,
ただただしです。
まつもと ゆきひろです
新井です。
西山和広です。
>>>>> In [ruby-dev : No.15909]
まつもと ゆきひろです
なかだです。
まつもと ゆきひろです
なかだです。
At Mon, 18 Feb 2002 12:50:31 +0900,
なかだです。
In message <200202201003.g1KA3As11455@sharui.nakada.kanuma.tochigi.jp>
新井です。
あづみです。
[#15507] fileutils (2) — Minero Aoki <aamine@...>
あおきです。
高橋征義です。
あおきです。
高橋征義です。結論は最後に。
あおきです。
高橋征義です。
あおきです。
高橋征義です。
あおきです。
高橋征義です。
あおきです。
高橋征義です。
あおきです。
けいじゅ@日本ラショナルソフトウェアです.
[#15519] typo in tracer.rb (SCRIPT_LINES__) — sheepman <sheepman@...>
こんにちは。
なひです。
まつもと ゆきひろです
なひです。
[#15556] TCPSocket#open で Errno::EALREADY — Kazuhiro NISHIYAMA <zn@...>
西山和広です。
[#15569] [REQ] File?chmod — keiju@... (Keiju ISHITSUKA)
けいじゅ@日本ラショナルソフトウェアです.
まつもと ゆきひろです
[#15573] [patch] resolv.rb for win32 platform — Tietew <tietew-ml-ruby-dev@...>
Tietew です。
なかだです。
こんにちは、なかむら(う)です。
なかだです。
In message <20011228143615.32D8.TIETEW-ML-RUBY-DEV@tietew.net>
こんにちは、なかむら(う)です。
Tietew です。
[#15603] filename within eval — nobu.nakada@...
なかだです。
[ruby-dev:15512] Re: fileutils (2)
高橋征義です。
すみません、つっこみを入れてしまいます。しかも長いです。
Minero Aoki <aamine@mx.edit.ne.jp> wrote:
> 長いあいだ放りだしていたファイル操作モジュール fileutils ですが、
> ようやくまとまりました。最新は
>
> http://www.loveruby.net/archive/fileutils.tar.gz
>
> です。入ってるテストスクリプトは 1.7 じゃないと動きません。
あ、互換性はいったん捨てることにしたんですね。
では、改めて考えてみましょう。
このファイル操作モジュールは、
* ファイルやディレクトリの作成・移動・削除などを行う
* 主にインストールの時などに使われる
というものですよね。確かにこういうのがあると、install.rb
とかは書きやすくなって便利そうです。
ここで要求されるモジュールの特徴としては、
* オプションがいろいろある
というのが第一に挙げられると思います。青木さんの最新版では、
verbose/noop/force/preserveの4つ(さらにrecursiveがメソッド名と
統合されている)が使われています。
fileutilsの最新版ではこれをどう解決しているかというと、
FileUtils#cd( [options,] dir )
というように、オプションを最初の引数に持ってきてます。ここで
cd(:verbose, :noop, some_dir) とかという感じで指定するわけ
ですね。
このため、dirが何番目の引数になるかは決まってはいない
ようになっています。……うーん、これはちょっとRuby的には
不自然な気が。
なんでこうなっているかというと、
FileUtils#ln_s( [options,] file1, file2 ..., dir )
というように、任意の数の引数を取るメソッドがあるのと、
Unixのコマンドがオプションを前に持ってくる習慣があるから
だろうと思います(あってます?)。
なお、このようなことをするための実装の方はといえば、
def newest?( *args )
(new,*fnames), (verbose,) = fu_parseargs( args, 1..INF, :verbose )
というように、引数は配列で受けて、fu_parseargsでparseしてから、
多重代入で受ける、という感じになっているようです。ちなみにこのINFは、
INF = 1/0.0
という定義になってますね。うむむむ。
ところで、上のln_sのように、file1,file2,...とたくさん並べる
必要はあるのでしょうか? shell上でその都度コマンドを入力する
ならいざしらず、Rubyのスクリプトならメソッドを並べるなり、
eachで回すなりすればいいような。
それよりも問題はオプションですね。やっぱりシンボルで引数の
前にオプションを置く(ために、引数の絶対位置に意味がなくなる)
のはRubyっぽくないので、なんだか抵抗があります。
では、どういうのがRubyっぽいのか? というのを考えると、やはり
verbose/noop/force/preserveみたいな属性は、オブジェクトの
プロパティとして持たせておく、というのがRubyっぽいような気が
します。そもそもverboseなんてのは、それぞれのメソッドについて
出力してほしいなら全部verbose、そうじゃないなら全部verboseじゃ
ないように指定する方が一般的かと思います。
というわけで、発想を少し(かなり)転換させて、cpやln_sやmkdirと
いった一連のメソッドは、FileUtilsモジュールのモジュール関数
ではなく、FileUtilsクラスのインスタンスメソッドにする、と
いうのはどうでしょうか。
# あるいは名前を変えてFileManagerとかにした方がいいのかもしれ
# ませんが。
こうすると、
fu = FileUtils.new()
fu.verbose = true
fu.noop = true
dirs.each{|d|
fu.mkdir(...)
fu.cp(...)
...
}
という感じに書けるようになります(verboseなどはinitializeの
引数でも指定できるようにした方がいいかも)。
んー、なんか別物っぽくなってしまいますけど、どうでしょうか?
高橋征義 (TAKAHASHI Masayoshi) E-mail: maki@rubycolor.org