File modes

A post on Arc
[Arcane Sentiment: Arc gets I/O right]
made an excellent point - file modes are essentially exposing a low
level implementation detail for a high level feature. Would be nice to
have File.open_read, open_write and open_append (or less clunky names
if anyone can think them up; it’s the principle of the thing) to
support the common cases.

martin

hi martin!

Martin DeMello [2008-07-10 21:48]:

Would be nice to have File.open_read, open_write and open_append
(or less clunky names if anyone can think them up; it’s the
principle of the thing) to support the common cases.
just added them to ruby-nuggets [1] :wink: (sans the ‘open_’)

[1] http://prometheus.rubyforge.org/ruby-nuggets/classes/IO.html

cheers
jens

On Jul 10, 1:48 pm, “Martin DeMello” [email protected] wrote:

A post on Arc [Arcane Sentiment: Arc gets I/O right]
made an excellent point - file modes are essentially exposing a low
level implementation detail for a high level feature. Would be nice to
have File.open_read, open_write and open_append (or less clunky names
if anyone can think them up; it’s the principle of the thing) to
support the common cases.

I don’t agree. First, there are too many possible combinations, making
separate method names infeasible IMO. Second, tradition. Third, it’s
more code (and more maintenance) for the core developers. Fourth, if
we follow that line of reasoning for other libraries (think Socket),
the API will explode.

Regards,

Dan

On Thu, Jul 10, 2008 at 2:29 PM, Jens W. [email protected]
wrote:

hi martin!

Martin DeMello [2008-07-10 21:48]:

Would be nice to have File.open_read, open_write and open_append
(or less clunky names if anyone can think them up; it’s the
principle of the thing) to support the common cases.
just added them to ruby-nuggets [1] :wink: (sans the ‘open_’)

[1] http://prometheus.rubyforge.org/ruby-nuggets/classes/IO.html

Neat :slight_smile: I suggested the open_ because I was wondering how you’d get
around the fact that there was already an IO.read, but your solution
looks good.

martin

Martin DeMello [2008-07-10 23:36]:

Neat :slight_smile: I suggested the open_ because I was wondering how you’d
get around the fact that there was already an IO.read, but your
solution looks good.
well, it’s not completely backwards compatible, since the original
IO::read would silently take a block. but i thought aliasing it and
only behaving in the new way if a block was provided, would be ok.
so i opted for the “less clunky” names :wink:

cheers
jens

On Thu, Jul 10, 2008 at 2:32 PM, Daniel B. [email protected]
wrote:

I don’t agree. First, there are too many possible combinations, making
separate method names infeasible IMO.

The modes are still there in .open if you need them; they just aren’t
exposed in the common cases.

Second, tradition.

And if you want them :slight_smile:

Third, it’s more code (and more maintenance) for the core developers.

Not that much more; it’s just a few methods

Fourth, if we follow that line of reasoning for other libraries (think Socket),
the API will explode.

From what I’ve seen, that’s not necessarily inconsistent with the ruby
way. Just needs good documentation.

martin