2011-02-12 22 views
5

Tengo un módulo llamado user_searches. Realiza algunas búsquedas que no son fundamentales para el modelo de usuario, por lo tanto, por qué estoy poniendo la responsabilidad en otro lugar. Quiero organizar todos mis modelos como este que realizan funciones de usuario no centrales en una subcarpeta lib llamada usuario. En este momento para incluir métodos del módulo en el modelo de usuario que tengo que poner ...Subcarpetas en lib

require 'user/user_searches' 

class User < ActiveRecord::Base 

    include UserSearches 

end 

... que no necesito la requieren si el archivo es directamente en la carpeta de la liberación, pero no si está en la subcarpeta ¿Qué debo hacer para que no necesite el requiere?

Respuesta

3

Puede poner las líneas necesarias necesarias en lib/user.rb de esa manera, todos los requisitos se cargan recursivamente en el inicio de la aplicación.

Como alternativa, puede poner algo como esto en un inicializador:

# put into config/initializers/load_lib.rb 
Dir["#{RAILS_ROOT}/lib/**/*.rb"].each { |f| require(f) } 

Se requerirá que todos los archivos de rubí en la carpeta lib. Usted sólo tiene que asegurarse de si esto es realmente lo que quieres :)

0

Se trata de obras que causan

en los carriles-2.2.2 Archivo/lib/initializer.rb en default_load_paths método inicializados para cargar el camino justo carpeta lib sin subdirectorios, para resolver esto puede editar el archivo de configuración de su proyecto `environment.rb y enviar a config.load_path array todos los subdires.

+1

Para Rails 2.x, según la documentación en environment.rb, agregue lo siguiente: 'config.autoload_paths + =% W (# {RAILS_ROOT}/lib/extra)' – ghayes