# New Beta of PickAxe3

**URL:** <https://www.ruby-forum.com/t/new-beta-of-pickaxe3/138891>\
**Category:** Ruby\
**Created:** [May 28, 2008, 6:16pm UTC](https://www.ruby-forum.com/t/new-beta-of-pickaxe3/138891 "2008-05-28T18:16:09Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![dirtytree](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/aeb1de/32.png) [@dirtytree](https://www.ruby-forum.com/u/dirtytree)\
**Post date:** [May 28, 2008, 6:16pm UTC](https://www.ruby-forum.com/t/new-beta-of-pickaxe3/138891/1 "2008-05-28T18:16:09Z")

</div>

I’ve been thinking long and hard about the tutorial section of the  
PickAxe. It’s the section of the book that seems to create the most  
emotion in readers: most folks seem to like the unconventional style  
(starting with classes and objects and working down) and some folks  
hate it. A while back, I asked here what people thought, and used what  
was said to guide me.

So this new beta of the PickAxe keeps the same overall structure for  
the tutorial. But I’m rewriting it to do two things:

1. I’m getting rid of the jukebox (loud cheers were heard throughout  
the land). The jukebox was always no more than a skeleton project on  
which to hang sample code illustrating points in the tutorial. But it  
never really went anywhere in the book. So now I’ll be using smaller,  
self contained code fragments. Some of them are just targeted to show  
a particular Ruby feature, and others do (at least vaguely) useful work.

2. I’m being more opinionated when it comes to the ways you should  
write code. So, for example, I’m pushing class inheritance way back,  
and instead focusing on mixins as the preferred way of structuring the  
sharing of functionality. (Obviously, inheritance still has a place,  
but I’d like to see less instances of code like "class Product \<  
ActiveRecord::Base’)

Along the way I’m dropping in more 1.9 goodies.

So, if you’re an existing beta reader, log in to your account and  
refresh your PDF. Be patient though, there’s already a backlog…

“Thank you” to everyone who helped by expressing an opinion.

(If you’d like information on the book, it’s at  
[http://pragprog.com/titles/ruby3/programming-ruby-3](http://pragprog.com/titles/ruby3/programming-ruby-3))

Cheers

Dave

---

<div class="post-metadata">

**Author:** ![dirtytree](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/aeb1de/32.png) [@dirtytree](https://www.ruby-forum.com/u/dirtytree)\
**Post date:** [May 28, 2008, 7:37pm UTC](https://www.ruby-forum.com/t/new-beta-of-pickaxe3/138891/2 "2008-05-28T19:37:33Z")

</div>

On May 28, 2008, at 09:07 , Dave T. wrote:

> 1. I’m being more opinionated when it comes to the ways you should  
> write code. So, for example, I’m pushing class inheritance way back,  
> and instead focusing on mixins as the preferred way of structuring  
> the sharing of functionality. (Obviously, inheritance still has a  
> place, but I’d like to see less instances of code like "class  
> Product \< ActiveRecord::Base’)

How about you just push against nonsensical names like Base?

class Product \< ActiveRecord

makes _plenty_ of sense by itself. 😛

---

<div class="post-metadata">

**Author:** ![dirtytree](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/aeb1de/32.png) [@dirtytree](https://www.ruby-forum.com/u/dirtytree)\
**Post date:** [May 28, 2008, 8:09pm UTC](https://www.ruby-forum.com/t/new-beta-of-pickaxe3/138891/3 "2008-05-28T20:09:19Z")

</div>

On May 28, 2008, at 12:36 PM, Ryan D. wrote:

> How about you just push against nonsensical names like Base?
> 
> class Product \< ActiveRecord
> 
> makes _plenty_ of sense by itself. 😛

class Product  
include ActiveRecord

end

makes even more… After all, a Product is not an ActiveRecord–it  
uses the functionality.

Dave

---

<div class="post-metadata">

**Author:** ![dirtytree](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/aeb1de/32.png) [@dirtytree](https://www.ruby-forum.com/u/dirtytree)\
**Post date:** [May 29, 2008, 3:38am UTC](https://www.ruby-forum.com/t/new-beta-of-pickaxe3/138891/4 "2008-05-29T03:38:09Z")

</div>

On Wed, May 28, 2008 at 10:36 AM, Ryan D. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
wrote:

> ```
> class Product < ActiveRecord
> 
> ```
> 
> makes _plenty_ of sense by itself. 😛

ActiveRecord, though, is a module, and for good reason. The problem  
isn’t really with Base, but ActiveRecord, which would have been a much  
better name for the class within the module than the module. (Sequel,  
with Sequel::Model, is better than ActiveRecord in naming, among other  
things.)

---

<div class="post-metadata">

**Author:** ![dirtytree](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/aeb1de/32.png) [@dirtytree](https://www.ruby-forum.com/u/dirtytree)\
**Post date:** [May 28, 2008, 9:23pm UTC](https://www.ruby-forum.com/t/new-beta-of-pickaxe3/138891/5 "2008-05-28T21:23:10Z")

</div>

-----BEGIN PGP SIGNED MESSAGE-----  
Hash: SHA1

On May 28, 2008, at 8:01 PM, Dave T. wrote:

> > > still has a place, but I’d like to see less instances of code like
> 
> end
> 
> makes even more… After all, a Product is not an ActiveRecord–it  
> uses the functionality.
> 
> Dave

Actually - to extend the example - i really like the way DataMapper  
reads:

# === class Product include DataMapper::Persistence end

Uses Persistence, provided by DataMapper.

That includes both the Task of the Module and the Source where it  
comes from.

The main problem of ActiveRecord::Base is that Base is such a generic  
name. And it implies that every object that has to do with AR is based  
on it.

Regards,  
Florian G.  
-----BEGIN PGP SIGNATURE-----  
Version: GnuPG v1.4.8 (Darwin)

iEYEARECAAYFAkg9qLQACgkQJA/zY0IIRZYLvgCfUebEiapDHM9hW6IZAaj97ql0  
45sAmQH6Z5LzxrFTfcx/huRrFp+XWWnV  
=6HvQ  
-----END PGP SIGNATURE-----
