Where or how should I define functions and classes to be globally
available to my entire Rails application? When I use script/generate
to make a new model, it is available to to entire app... what if I want
to make a simple class or global func to be available to the entire
app? Is there a specific Rails way to do it?
what if I want
to make a simple class or global func to be available to the entire
app? Is there a specific Rails way to do it?
It depends on where you need to use this code.
If it's a view method, helpers/application_helper.rb is the place.
If you have a class that is used by other code then you need to put
that into lib/. For example, if you had a class that encrypts data,
you might create a class called 'Encryptor' and put it in
lib/encryptor.rb. If you're using <Rails 1.2, then you need to add an
include to config/environment.rb to pull that class in. As of Rails
1.2, this is done for you when the class is called.
If you have a method that is used by all controllers, then you *can*
put it in application_controller.rb, but you should think about whether
it belongs there or should really be in a helper or separate utility
class.
Steve,
Thanks for the reply, that answered my question as well as some others.
Let me see if I got it straight though....
* Putting methods in module ApplicationHelper found in
helpers/application_helper.rb will only be available to views (but not
controllers or models)?
* files created in /lib will automatically be included in Rails 1.2
and must be manually included in config/environment.rb in Rails < 1.2?
* Putting methods in class ApplicationController found in
controllers/application.rb will be available to all controllers (but
not views or models)?