[#372953] Strange whitespace parsing behavior on Ruby 1.8.7 (patchlevel 249/302) — Ehsanul Hoque <ehsanul_g3@...>

13 messages 2010/11/02
[#372956] Re: Strange whitespace parsing behavior on Ruby 1.8.7 (patchlevel 249/302) — Robert Klemme <shortcutter@...> 2010/11/02

On Tue, Nov 2, 2010 at 5:49 AM, Ehsanul Hoque <ehsanul_g3@hotmail.com> wrot=

[#372978] Re: Strange whitespace parsing behavior on Ruby 1.8.7 (patchlevel 249/302) — Ehsanul Hoque <ehsanul_g3@...> 2010/11/02

[#373013] Regular Expression — Dv Dasari <dv.mymail@...>

I am trying to write a reqular expression to match a word with my input

22 messages 2010/11/02
[#373016] Re: Regular Expression — Richard Conroy <richard.conroy@...> 2010/11/02

On Tue, Nov 2, 2010 at 9:05 PM, Dv Dasari <dv.mymail@gmail.com> wrote:

[#373018] Re: Regular Expression — Kendall Gifford <zettabyte@...> 2010/11/02

On Tue, Nov 2, 2010 at 3:34 PM, Richard Conroy <richard.conroy@gmail.com> wrote:

[#373049] UTF-8 aware chop for 1.8? — Ammar Ali <ammarabuali@...>

Hello,

12 messages 2010/11/03

[#373070] Ruby Perofrmance — Ruby Me <i_baseet@...>

Hi

21 messages 2010/11/03

[#373097] Ruby vs PHP for the web — Ruby Me <i_baseet@...>

Hi

43 messages 2010/11/04
[#373461] Re: Ruby vs PHP for the web — Charles Calvert <cbciv@...> 2010/11/10

On Wed, 3 Nov 2010 20:49:22 -0500, Ruby Me <i_baseet@hotmail.com>

[#373534] Re: Ruby vs PHP for the web — Mike Stephens <rubfor@...> 2010/11/11

Charles Calvert wrote in post #960599:

[#373563] Re: Ruby vs PHP for the web — Jes俍 Gabriel y Gal疣 <jgabrielygalan@...> 2010/11/12

On Thu, Nov 11, 2010 at 11:50 PM, Mike Stephens <rubfor@recitel.net> wrote:

[#373585] Re: Ruby vs PHP for the web — Josh Cheek <josh.cheek@...> 2010/11/12

2010/11/12 Jes=FAs Gabriel y Gal=E1n <jgabrielygalan@gmail.com>

[#373220] Create a class - ideas — flebber <flebber.crue@...>

15 messages 2010/11/06

[#373248] Code in a class but not in a method -- please explain! — "Bruce F." <brucedfeist@...>

I'm a newcomer to Ruby, and I'm confused about what executable

10 messages 2010/11/07

[#373260] sort_by is not stable ? — Michel Demazure <michel@...>

sort_by is not a stable sorting method (ruby 1.9.2 p0)

22 messages 2010/11/07
[#373262] Re: sort_by is not stable ? — Ammar Ali <ammarabuali@...> 2010/11/07

On Sun, Nov 7, 2010 at 12:22 PM, Michel Demazure <michel@demazure.com> wrot=

[#373264] Re: sort_by is not stable ? — Michel Demazure <michel@...> 2010/11/07

Ammar Ali wrote in post #959889:

[#373265] Re: sort_by is not stable ? — Ammar Ali <ammarabuali@...> 2010/11/07

On Sun, Nov 7, 2010 at 1:15 PM, Michel Demazure <michel@demazure.com> wrote:

[#373266] irb misbehaviour with arrow keys on Windows — Marvin Gülker <sutniuq@...>

Hi there,

10 messages 2010/11/07

[#373352] ruby-pg gem fails to install — Rajinder Yadav <devguy.ca@...>

i built postgres 9.0 from source and i am trying to install ruby-pg

11 messages 2010/11/08

[#373397] Analyzer for errors in code ? — David Unric <dunric29a@...>

Hello,

19 messages 2010/11/09

[#373421] help with code, new to programming — Steve Rees <stevoreesimo@...>

I am new to programming and have been learning Ruby using online

13 messages 2010/11/09

[#373479] ruby ORM — zuerrong <zuerrong@...>

Hello,

64 messages 2010/11/11
[#373480] Re: ruby ORM — Sam Duncan <sduncan@...> 2010/11/11

I've been writing Ruby for three days now. DataMapper seems very good.

[#373607] ORM's - Don't Do It! — Mike Stephens <rubfor@...> 2010/11/12

Sam Duncan wrote in post #960638:

[#373616] Re: ORM's - Don't Do It! — Phillip Gawlowski <cmdjackryan@...> 2010/11/12

On Fri, Nov 12, 2010 at 5:47 PM, Mike Stephens <rubfor@recitel.net> wrote:

[#373634] Re: ORM's - Don't Do It! — Petite Abeille <petite.abeille@...> 2010/11/12

[#373663] Re: ORM's - Don't Do It! — Phillip Gawlowski <cmdjackryan@...> 2010/11/13

On Fri, Nov 12, 2010 at 9:56 PM, Petite Abeille

[#373666] Re: ORM's - Don't Do It! — Mike Stephens <rubfor@...> 2010/11/13

My problem is the mismatch.

[#373676] Re: ORM's - Don't Do It! — Phillip Gawlowski <cmdjackryan@...> 2010/11/13

On Sat, Nov 13, 2010 at 10:54 AM, Mike Stephens <rubfor@recitel.net> wrote:

[#373746] Re: ORM's - Don't Do It! — "Skye Shaw!@#$" <skye.shaw@...> 2010/11/14

On Nov 12, 8:47=A0am, Mike Stephens <rub...@recitel.net> wrote

[#374853] DRM Principle - Don't Repeat Microsoft — Mike Stephens <rubfor@...> 2010/12/03

I was thinking about this last night and it's part of a belief I have

[#373481] what's an object? — "Eva" <eva54321@...>

SSdtIGFsc28gc3dpdGNoaW5nIGZyb20gcGVybCBhbmQgcGhwLgpJJ20gbm90IHN1cmUgaW4gcnVi

55 messages 2010/11/11
[#373482] Re: what's an object? — Alex Stahl <astahl@...5.com> 2010/11/11

Simple answer: everything. Everything is considered an object,

[#373490] Re: what's an object? — "Y. NOBUOKA" <nobuoka@...> 2010/11/11

> Simple answer: everything. Everything is considered an object,

[#373500] Re: what's an object? — Alex Stahl <astahl@...5.com> 2010/11/11

Not that I know the internals of the language well enough to debate the

[#373504] Re: what's an object? — "Y. NOBUOKA" <nobuoka@...> 2010/11/11

> Not that I know the internals of the language well enough to debate the

[#373511] Re: what's an object? — Alex Stahl <astahl@...5.com> 2010/11/11

Fair enough. The link even cites the Ruby spec to indicate that

[#373522] Re: what's an object? — "Y. NOBUOKA" <nobuoka@...> 2010/11/11

Did you recognize the difference between a method and a Method object?

[#373528] Re: what's an object? — Josh Cheek <josh.cheek@...> 2010/11/11

Disclaimer: I seem to be in a crabby mood this morning. I went back over it

[#373569] Re: what's an object? — "Y. NOBUOKA" <nobuoka@...> 2010/11/12

Hi, Josh

[#373571] Re: what's an object? — Josh Cheek <josh.cheek@...> 2010/11/12

On Fri, Nov 12, 2010 at 3:01 AM, Xavier Noria <fxn@hashref.com> wrote:

[#373572] Re: what's an object? — Xavier Noria <fxn@...> 2010/11/12

On Fri, Nov 12, 2010 at 12:25 PM, Josh Cheek <josh.cheek@gmail.com> wrote:

[#373576] Re: what's an object? — Robert Dober <robert.dober@...> 2010/11/12

On Fri, Nov 12, 2010 at 12:38 PM, Xavier Noria <fxn@hashref.com> wrote:

[#373582] Re: what's an object? — Xavier Noria <fxn@...> 2010/11/12

On Fri, Nov 12, 2010 at 1:09 PM, Robert Dober <robert.dober@gmail.com> wrot=

[#373536] Parsing XML with Ruby — jackster the jackle <johnsheahan@...>

I need to hit an https link and pass a username and password in order to

17 messages 2010/11/12
[#373547] Re: Parsing XML with Ruby — jackster the jackle <johnsheahan@...> 2010/11/12

It seems to be working...here is my test code:

[#373539] Scheme's (cond ((assertion) (value))...(else (value))) statement implemented in ruby? — timr <timrandg@...>

Hi Rubyists,

10 messages 2010/11/12

[#373599] help sorting objects by their instance field — Aaron Haas <aaron4osu@...>

I'm trying to figure out how to sort objects in an array by one of their

14 messages 2010/11/12

[#373618] Fast Debugger (Ruby 1.9.2, DevKit 4.5.0, JDK 6u22, NetBeans 6.9.1) — Allan Chin <achin5957@...>

I've been trying to run this configuration in debug mode on my Windows

17 messages 2010/11/12

[#373680] an each/block problem — Paul Roche <prpaulroche@...>

Hi, I want to take the value from an each method and place it in a

12 messages 2010/11/13

[#373722] Mysql::Result .each_hash - unexpected result — Andy Tolle <durexlw.register@...>

Consider the following code:

12 messages 2010/11/14
[#373738] Re: Mysql::Result .each_hash - unexpected result — botp <botpena@...> 2010/11/14

On Sun, Nov 14, 2010 at 5:55 PM, Andy Tolle <durexlw.register@gmail.com> wr=

[#373745] Re: Mysql::Result .each_hash - unexpected result — Andy Tolle <durexlw.register@...> 2010/11/14

botp wrote in post #961345:

[#373773] please help load from txt — Lark Work <lars_werkman@...>

hi i new to this forum and i have a problem a made a script containing a

17 messages 2010/11/15

[#373787] Can't get Ruby programs to work from Command Prompt — Dd Dd <dd25@...>

Hello; I'm having a problem running Ruby programs through the command

10 messages 2010/11/15

[#373852] cool.io 0.9.0: a cool event framework for Ruby (formerly known as Rev) based on libev — Tony Arcieri <tony.arcieri@...>

Github: https://github.com/tarcieri/cool.io

15 messages 2010/11/16
[#374061] Re: [ANN] cool.io 0.9.0: a cool event framework for Ruby (formerly known as Rev) based on libev — Eric Wong <normalperson@...> 2010/11/19

Tony Arcieri <tony.arcieri@medioh.com> wrote:

[#373930] Ruby Not observing DRY principle — flebber <flebber.crue@...>

HI I am hoping you can give me some guidance. I feel I really am

17 messages 2010/11/18

[#373990] Where to start from? — Ruby Me <i_baseet@...>

Hi guys,

16 messages 2010/11/18

[#374001] Ruby Programming — Tridib Bandopadhyay <tridib04@...>

Hello

18 messages 2010/11/18

[#374104] gsub and backslashes — Ralph Shnelvar <ralphs@...32.com>

Consider the string

16 messages 2010/11/20
[#374151] Re: gsub and backslashes — Brian Candler <b.candler@...> 2010/11/21

Ralph Shnelvar wrote in post #962847:

[#374114] Problem regarding regular expression — Stanford Ng <ngkooinam@...>

puts( /^[a-z 0-9]*$/ =~ 'Well hello 123' ) # no match due to ^ and

12 messages 2010/11/21

[#374127] why i can't find my ruby ? — Pen Ttt <myocean135@...>

i installed ruby this way:

18 messages 2010/11/21

[#374210] system() or process.create? — Fengfeng Li <lifengfeng@...>

Hi everyone,

13 messages 2010/11/23

[#374229] Regex negative look-behind bug? — Ruby Nuby <b1st@...>

irb, Ruby 1.9.1

14 messages 2010/11/23

[#374232] Ruby 1.8 vs 1.9 — Peter Pincus <peter.pincus@...>

Hi,

85 messages 2010/11/23
[#374313] Re: Ruby 1.8 vs 1.9 — Jörg W Mittag <JoergWMittag+Ruby@...> 2010/11/25

David Masover wrote:

[#374394] Re: Ruby 1.8 vs 1.9 — David Masover <ninja@...> 2010/11/26

On Wednesday, November 24, 2010 08:40:22 pm J=F6rg W Mittag wrote:

[#374406] Re: Ruby 1.8 vs 1.9 — Phillip Gawlowski <cmdjackryan@...> 2010/11/26

On Fri, Nov 26, 2010 at 1:42 AM, David Masover <ninja@slaphack.com> wrote:

[#374425] Re: Ruby 1.8 vs 1.9 — David Masover <ninja@...> 2010/11/27

On Friday, November 26, 2010 05:51:38 am Phillip Gawlowski wrote:

[#374444] Re: Ruby 1.8 vs 1.9 — Phillip Gawlowski <cmdjackryan@...> 2010/11/27

On Sat, Nov 27, 2010 at 9:04 AM, David Masover <ninja@slaphack.com> wrote:

[#374448] Re: Ruby 1.8 vs 1.9 — David Masover <ninja@...> 2010/11/27

On Saturday, November 27, 2010 11:41:59 am Phillip Gawlowski wrote:

[#374452] Re: Ruby 1.8 vs 1.9 — Phillip Gawlowski <cmdjackryan@...> 2010/11/27

On Sat, Nov 27, 2010 at 7:50 PM, David Masover <ninja@slaphack.com> wrote:

[#374462] Re: Ruby 1.8 vs 1.9 — David Masover <ninja@...> 2010/11/28

On Saturday, November 27, 2010 02:47:12 pm Phillip Gawlowski wrote:

[#374470] Re: Ruby 1.8 vs 1.9 — Phillip Gawlowski <cmdjackryan@...> 2010/11/28

On Sun, Nov 28, 2010 at 1:56 AM, David Masover <ninja@slaphack.com> wrote:

[#374472] Re: Ruby 1.8 vs 1.9 — David Masover <ninja@...> 2010/11/28

On Sunday, November 28, 2010 08:00:18 am Phillip Gawlowski wrote:

[#374475] Re: Ruby 1.8 vs 1.9 — Phillip Gawlowski <cmdjackryan@...> 2010/11/28

On Sun, Nov 28, 2010 at 5:33 PM, David Masover <ninja@slaphack.com> wrote:

[#374488] Re: Ruby 1.8 vs 1.9 — David Masover <ninja@...> 2010/11/28

On Sunday, November 28, 2010 11:19:06 am Phillip Gawlowski wrote:

[#374241] Re: Ruby 1.8 vs 1.9 — Chuck Remes <cremes.devlist@...> 2010/11/23

[#374260] Re: Ruby 1.8 vs 1.9 — Brian Candler <b.candler@...> 2010/11/24

Chuck Remes wrote in post #963430:

[#374264] Re: Ruby 1.8 vs 1.9 — Michael Fellinger <m.fellinger@...> 2010/11/24

On Wed, Nov 24, 2010 at 8:14 PM, Brian Candler <b.candler@pobox.com> wrote:

[#374274] Re: Ruby 1.8 vs 1.9 — Brian Candler <b.candler@...> 2010/11/24

Michael Fellinger wrote in post #963539:

[#374278] Re: Ruby 1.8 vs 1.9 — Phillip Gawlowski <cmdjackryan@...> 2010/11/24

On Wed, Nov 24, 2010 at 4:15 PM, Brian Candler <b.candler@pobox.com> wrote:

[#374281] Re: Ruby 1.8 vs 1.9 — Brian Candler <b.candler@...> 2010/11/24

Phillip Gawlowski wrote in post #963602:

[#374287] Re: Ruby 1.8 vs 1.9 — Phillip Gawlowski <cmdjackryan@...> 2010/11/24

On Wed, Nov 24, 2010 at 5:09 PM, Brian Candler <b.candler@pobox.com> wrote:

[#374293] Re: Ruby 1.8 vs 1.9 — Josh Cheek <josh.cheek@...> 2010/11/24

On Wed, Nov 24, 2010 at 12:20 PM, Phillip Gawlowski <

[#374294] Re: Ruby 1.8 vs 1.9 — Phillip Gawlowski <cmdjackryan@...> 2010/11/24

On Wed, Nov 24, 2010 at 8:02 PM, Josh Cheek <josh.cheek@gmail.com> wrote:

[#374332] Re: Ruby 1.8 vs 1.9 — Robert Klemme <shortcutter@...> 2010/11/25

On Wed, Nov 24, 2010 at 5:09 PM, Brian Candler <b.candler@pobox.com> wrote:

[#374299] Ruby's "More than one way to do things." — Jason Lillywhite <jason.lillywhite@...>

There is one point made about Python vs. Ruby on this site:

23 messages 2010/11/24

[#374431] relative-require v1.0 — "zimbatm ..." <jonas@...>

relative-require.rb

12 messages 2010/11/27

[#374437] How to use Ruby like shell script? — Yu-Hsuan Lai <raincolee@...>

Can I use ruby like my linux shell script(e.x. bash)?(or on the other hand,

21 messages 2010/11/27
[#374446] Re: How to use Ruby like shell script? — James Edward Gray II <james@...> 2010/11/27

On Nov 27, 2010, at 8:51 AM, Yu-Hsuan Lai wrote:

[#374550] ruby on server side — Rajesh Huria <rajesh.huria@...>

Hi,

13 messages 2010/11/29

[#374557] Help sorting an array — Jim Burgess <jack.zelig@...>

Hi,

32 messages 2010/11/29
[#374730] Re: Help sorting an array — Mike Stephens <rubfor@...> 2010/12/01

If you've ever read "Real Programmers don't use Pascal" (see

[#374747] Re: Help sorting an array — Ammar Ali <ammarabuali@...> 2010/12/01

On Wed, Dec 1, 2010 at 8:30 PM, Mike Stephens <rubfor@recitel.net> wrote:

[#374751] Try it and see. — Mike Stephens <rubfor@...> 2010/12/01

Ammar Ali wrote in post #965529:

[#374756] Re: Try it and see. — David Masover <ninja@...> 2010/12/01

On Wednesday, December 01, 2010 03:04:42 pm Mike Stephens wrote:

[#374771] Re: Try it and see. — Mike Stephens <rubfor@...> 2010/12/02

David Masover wrote in post #965565:.

[#374587] RFC Future Ruby hash literal syntax — Michael Kaelbling <michael.kaelbling@...>

REQUEST FOR COMMENTS: Change to future Ruby hash literal syntax

15 messages 2010/11/29

[#374619] installing ncurses and IDE — Nikita Kuznetsov <moog_master@...>

Hi all, I was recently advised to use ncurses in order to do some event

11 messages 2010/11/30

[#374632] 'require' is not recognised — Tara Keane <tararakeane@...>

New to Ruby and trying to run benchmark

14 messages 2010/11/30

Re: abstract classes and modules

From: David Masover <ninja@...>
Date: 2010-11-28 17:02:48 UTC
List: ruby-talk #374473
On Sunday, November 28, 2010 04:15:19 am Diego Virasoro wrote:
> Hello,
> for some code I am writing, I'd like to have a couple of abstract
> classes. However I am not very sure how to go about it in Ruby.

Just do it.

> Ideally all I would need is:
> 1) The class cannot be instantiated
> and/or
> 2) The class is not visible outside of the module it comes in

The canonical Ruby solution is either to

1) Document the class as abstract, and warn people not to instantiate it
or
2) Document the class as a private implementation detail

The simplest way to do this would be to put "Abstract" in the name of your 
class, but you'll want to go a bit farther than that.

> What would be the canonical way to go about this in Ruby? Should I use
> a mix-in module?

No, if it's a class, you should use a class. Modules are for collections of 
behavior you might mix in to a class, but sometimes, a superclass actually 
does make sense.

So you should do whichever actually makes sense to you. Do what makes it 
easiest to do things the right way. Don't even consider how to prevent people 
from doing things the wrong way.

> Ideally I would prefer to use a class since all the subclasses have a
> similar instantiation so I'd like to code it only once and use
> super(),

If you call super, while the behavior is a bit weird, it will hit module 
methods.

> but then the user himself may try to instantiate it breaking
> the whole "magic". :)

This is Ruby. The user may try to do ANYTHING, and you CANNOT stop them.

Let's say you use a module. How do you stop the user from inheriting from that 
module? Or say you use a class -- even if you stop the user from instantiating 
it, how do you stop them from simply inheriting from that class and 
instantiating anyway?

So stop trying. Document the proper way to use your code, and don't try to 
prevent users from doing it the wrong way.

Just in case I haven't convinced you, here's a few examples of how you might 
do what you're accomplishing, and why they don't work.

You might do this:

class Abstract
  def self.new
    raise "Can't initialize abstract class!"
  end
end

But then you'll have a hard time instantiating it yourself in subclasses, and 
the user can still do this:

Class.instance_method(:new).bind(Abstract).call

That's assuming they can't figure out (and duplicate) exactly how you manage 
to instantiate subclasses. You could do something fancier:

class Abstract
  def self.new
    if self == Abstract
      raise "Can't instantiate abstract class!"
    else
      super
    end
  end
end

But then they can do this:

Class.new(Abstract).new

Which is basically an anonymous version of this:

class Foo < Abstract; end
Foo.new

You could try to hide the class away by making it anonymous:

module MyModule
  k = Class.new do
    def some_method
      "Don't call me without super!"
    end
  end

  class Foo < k
    def some_method
      super
      "some_method called in child"
    end
  end
end

Now no one outside that block can see k, right?

Wrong.

MyModule::Foo.ancestors[1].new

I suppose you could override ancestors, but that's just an arms race that 
you're very likely to lose. Just for fun, let's add that in:

class MyModule::Foo
  def self.ancestors
    a = super
    [a.first] + a[2...a.length]
  end
end

So now I just do this:

Class.instance_method(:ancestors).bind(MyModule::Foo).call[1].new

You'd pretty much have to dig into all the core classes like Class and Object 
to really prevent me from doing this kind of trick. I don't think that's worth 
the time and effort, and I think it's very likely I could still find a way 
around it.

If you really want, you could do something like one of those raise-in-
the-'new'-method approaches to at least force your users to know what they're 
doing, but I don't really see the point. If your users want to do things 
properly, they'll follow the docs. If they don't, you can't stop them.

In This Thread