# Add e method "inline" to an object?

**URL:** <https://www.ruby-forum.com/t/add-e-method-inline-to-an-object/146409>\
**Category:** Ruby\
**Created:** [August 20, 2008, 6:35pm UTC](https://www.ruby-forum.com/t/add-e-method-inline-to-an-object/146409 "2008-08-20T18:35:30Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![ISSSSaki\_Baz\_C](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/i/51bf81/32.png) [@ISSSSaki\_Baz\_C](https://www.ruby-forum.com/u/ISSSSaki_Baz_C)\
**Post date:** [August 20, 2008, 6:35pm UTC](https://www.ruby-forum.com/t/add-e-method-inline-to-an-object/146409/1 "2008-08-20T18:35:30Z")

</div>

Hi, I know that I can extend a Class instance (an object) with a  
method(s) by doing:

object.extend Module

but can I do it in a “inline” way without the need of a module?  
I just want something as follows:

time = Time.now  
object.add\_method ‘def say\_time(); return time; end’

irb\> object.say\_time  
–\> time

Note that I **don’t** want to include the “add\_method” in object class  
or in Object class. This is, I don’t want to “dirty” object class.

Also note that I can’t use “object.extend Module” since the method  
“say\_time” must return a variable “time” value that I pass as an  
argument.

Is there some way? Thanks a lot.

---

<div class="post-metadata">

**Author:** ![ISSSSaki\_Baz\_C](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/i/51bf81/32.png) [@ISSSSaki\_Baz\_C](https://www.ruby-forum.com/u/ISSSSaki_Baz_C)\
**Post date:** [August 20, 2008, 7:08pm UTC](https://www.ruby-forum.com/t/add-e-method-inline-to-an-object/146409/2 "2008-08-20T19:08:18Z")

</div>

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

I’ll explain it by example:

a = “a”  
#=\> “a”  
class \<\< a  
def fooify  
return “foo #{self}”  
end  
end

a.fooify  
#=\> “foo a”  
b = “b”  
#=\> “b”  
b.fooify  
#NoMethodError: undefined method `fooify’ for “b”:String

# from (irb):9

# from :0

On Aug 20, 2008, at 6:31 PM, Iñaki Baz C. wrote:

> Is there some way? Thanks a lot.
> 
> –  
> Iñaki Baz C.  
> [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

-----BEGIN PGP SIGNATURE-----  
Version: GnuPG v1.4.8 (Darwin)

iEYEARECAAYFAkisT1kACgkQJA/zY0IIRZYMfgCgsA7iBHQbirDuP+91V90C32pu  
EdEAmwUg+0ueHuCgdesl4jvwnMFjNc7Q  
=QgJ9  
-----END PGP SIGNATURE-----

---

<div class="post-metadata">

**Author:** ![ISSSSaki\_Baz\_C](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/i/51bf81/32.png) [@ISSSSaki\_Baz\_C](https://www.ruby-forum.com/u/ISSSSaki_Baz_C)\
**Post date:** [August 20, 2008, 7:17pm UTC](https://www.ruby-forum.com/t/add-e-method-inline-to-an-object/146409/3 "2008-08-20T19:17:05Z")

</div>

On Aug 20, 2008, at 9:31 AM, Iñaki Baz C. wrote:

> irb\> object.say\_time  
> –\> time

You can do this with singleton methods:

irb(main):001:0\> object = Object.new  
=\> #Object:0x304af8

irb(main):002:0\> def object.say\_time; Time.now; end  
=\> nil

irb(main):003:0\> object.say\_time  
=\> Wed Aug 20 10:13:29 -0700 2008

---

<div class="post-metadata">

**Author:** ![ISSSSaki\_Baz\_C](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/i/51bf81/32.png) [@ISSSSaki\_Baz\_C](https://www.ruby-forum.com/u/ISSSSaki_Baz_C)\
**Post date:** [August 20, 2008, 10:39pm UTC](https://www.ruby-forum.com/t/add-e-method-inline-to-an-object/146409/4 "2008-08-20T22:39:19Z")

</div>

El Miércoles, 20 de Agosto de 2008, Michael G.  
escribió:\> You can do this with singleton methods:

> irb(main):001:0\> object = Object.new  
> =\> #Object:0x304af8
> 
> irb(main):002:0\> def object.say\_time; Time.now; end  
> =\> nil
> 
> irb(main):003:0\> object.say\_time  
> =\> Wed Aug 20 10:13:29 -0700 2008

Thanks to both 🙂
