Question about lib directory.
开发者_如何学编程What are good practices in using the lib directory?
When should it be used over app/models or app/helpers? And somewhat related how do you get Rails 3 to include files from the lib directory?Thanks
One use of the lib directory (how I use it most often) is to share code between models to stay DRY. For example, if you are defining a tag_tokens
attribute on many different models for use with a tokenizer input, you could put that in "tag_accessor.rb" or something, place it in /lib
', and then include it with include TagAccessor
. The ruby file might look like:
module TagAccessor
def tag_tokens
tags.map(&:name).join(',')
end
def tag_tokens=(names)
self.tag_ids = names.split(",").uniq
end
end
(This is an example from one of my apps, which is why it's so specific). Then to load the /lib folder in Rails 3, place this in your application.rb
:
config.autoload_paths += %W(#{config.root}/lib)
精彩评论