views:

51

answers:

2

I have an Array extension method I want to use in my Rails 3 project. Where should it live?

I have a app/classes where I originally put it (array_extensions.rb), and in my config/application.rb I load the path: config.autoload_paths += %W(#{Rails.root}/app/classes). However, when I drop to rails console the extension is not loaded.

Is there a pre-definded place I should put my extension methods for Rails 3? Or, a pre-definded way to add them? I know Rails has it's own extensions methods for Array. Should I add mine to active_support/core_ext/array/conversions.rb?

What's the best practice for Rails 3?

A: 

All .rb files in config/initializers are required into the environment at startup; you should be putting extensions in there.

Chris
+5  A: 

The better way is create your extension in lib/core_ext directory to understand easyly where is your core_ext.

After create an initializer to require this file.

shingara
Yes, I forgot to mention I also tried moving it to lib, but hadn't considered a separate folder for extensions. I guess my main problem was assuming that Rails would automatically load the class extension. Instead I still had to add a requires clause.
Edward J. Stembler