When I started programming Ruby and I wanted abstract classes I would
raise an exception in the initialize method telling the client that
they were trying to instantiate an abstract class. That was my best
attempt at self-documenting code at the time.
Nowadays, however, when I have behaviour that is abstract, I just put
it in a module. That feels like much more idiomatic Ruby.
On 4 Apr 2010, at 05:00, David Chelimsky wrote:
On Sat, Apr 3, 2010 at 10:45 PM, Julian Leviston
<jul...@leviston.net> wrote:
On 04/04/2010, at 7:32 AM, David Chelimsky wrote:
On Sat, Apr 3, 2010 at 8:56 AM, Vojto Rinik <zero0...@gmail.com>
wrote:
Hello RSpec users!
I have one abstract class and a few classes that inherit from
that abstract
one.
Ruby doesn't have abstract classes. You can have a base class that
you
don't _intend_ to instantiate directly, but there's nothing stopping
you from doing so, so it's not like an abstract class in java, which
you actually can't instantiate directly.
I've seen some cases where the initialize method is made private so
you can't just call Foo.new, so it sort of feels like an abstract
class, but even in that case you can still use send() to instantiate
one in a test:
AbstractIshClass.send(:new)
How about if you overrode new and __new__ ?
Then override the override. AFAIK, there's really no preventing a
client from using an object however it chooses in Ruby. You can make
it difficult, but I'm pretty sure there's always a way around it.
_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users
cheers,
Matt
http://mattwynne.net
+447974 430184
_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users