# Extending Ruby classes in Rails

**URL:** <https://www.ruby-forum.com/t/extending-ruby-classes-in-rails/98676>\
**Category:** Rails\
**Created:** [July 17, 2006, 1:32pm UTC](https://www.ruby-forum.com/t/extending-ruby-classes-in-rails/98676 "2006-07-17T13:32:58Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![morten](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/cdc98d/32.png) [@morten](https://www.ruby-forum.com/u/morten)\
**Post date:** [July 17, 2006, 1:32pm UTC](https://www.ruby-forum.com/t/extending-ruby-classes-in-rails/98676/1 "2006-07-17T13:32:58Z")

</div>

Hi.

I’ve placed the following in lib/mods.rb:

class String  
def String.foo  
“bar”  
end

def bar  
“baz”  
end  
end

But it does not get picked up:

white:~/svn/tagticks morten$ script/console  
Loading development environment.

> > String.foo  
> > NoMethodError: undefined method `foo’ for String:Class  
> > from (irb):1
> 
> > “fdsfs”.foo  
> > NoMethodError: undefined method `foo’ for “fdsfs”:String  
> > from (irb):2
> 
> > “fdsfs”.bar  
> > NoMethodError: undefined method `bar’ for “fdsfs”:String  
> > from (irb):3

What’s the appropriate way to extend a ruby class for a rails app?

Thanks.

Morten

---

<div class="post-metadata">

**Author:** ![morten](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/cdc98d/32.png) [@morten](https://www.ruby-forum.com/u/morten)\
**Post date:** [July 17, 2006, 1:45pm UTC](https://www.ruby-forum.com/t/extending-ruby-classes-in-rails/98676/2 "2006-07-17T13:45:30Z")

</div>

Morten wrote:

> def bar  
> from (irb):1  
> Thanks.
> 
> Morten
> 
> * * *
> 
> Rails mailing list  
> removed\_email\_address@domain.invalid  
> [http://lists.rubyonrails.org/mailman/listinfo/rails](http://lists.rubyonrails.org/mailman/listinfo/rails)

You must require mods somewhere in your rails code. Try adding  
require ‘mods’  
to your environment.rb, for example. It’s only models and a few other  
things that gets loaded automagically.

–  
Ola B. ([http://ola-bini.blogspot.com](http://ola-bini.blogspot.com))  
JvYAML, RbYAML, JRuby and Jatha contributor  
System Developer, Karolinska Institutet ([http://www.ki.se](http://www.ki.se))  
OLogix Consulting ([http://www.ologix.com](http://www.ologix.com))

“Yields falsehood when quined” yields falsehood when quined.

---

<div class="post-metadata">

**Author:** ![morten](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/cdc98d/32.png) [@morten](https://www.ruby-forum.com/u/morten)\
**Post date:** [July 17, 2006, 1:57pm UTC](https://www.ruby-forum.com/t/extending-ruby-classes-in-rails/98676/3 "2006-07-17T13:57:43Z")

</div>

> > What’s the appropriate way to extend a ruby class for a rails app?
> 
> You must require mods somewhere in your rails code. Try adding  
> require ‘mods’  
> to your environment.rb, for example. It’s only models and a few other  
> things that gets loaded automagically.

Excellent, I added the following to environment.rb and now it works.

require File.join("#{RAILS\_ROOT}/lib", ‘mods’)

Thanks Ola.

Morten

---

<div class="post-metadata">

**Author:** ![morten](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/cdc98d/32.png) [@morten](https://www.ruby-forum.com/u/morten)\
**Post date:** [July 17, 2006, 9:07pm UTC](https://www.ruby-forum.com/t/extending-ruby-classes-in-rails/98676/4 "2006-07-17T21:07:55Z")

</div>

On 7/17/06, Morten [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> What’s the appropriate way to extend a ruby class for a rails app?

The preferred route that most people take is to bundle the modifications  
as  
a plugin and require the necessary files in the plugin’s init.rb. See  
Top-Funky’s excellent tutorial for more info:  
[http://nubyonrails.com/articles/2006/05/04/the-complete-guide-to-rails-plugins-part-i](http://nubyonrails.com/articles/2006/05/04/the-complete-guide-to-rails-plugins-part-i)

Josh
