tutorial rails que ejemplos descargar curso caracteristicas aprender ruby-on-rails ruby-on-rails-3

ruby-on-rails - ejemplos - ruby on rails que es



Rails 3 autocarga (4)

Tengo una clase ConstData:

class ConstData US_CITIES = [''miami'', ''new york''] EUROPERN_CITIES = [''madrid'', ''london''] end

Se almacena en /lib/const_data.rb

La idea es que dentro de un modelo, controlador o vista pueda hacer:

ConstData::US_CITIES para obtener las US_CITIES, etc.

Rails debería cargar esta clase automáticamente, obtuve esto de: http://groups.google.com/group/rubyonrails-talk/browse_thread/thread/662abfd1df9b2612?hl=en

Sin embargo, esto no funciona. ¿Alguien puede explicarme cómo lograr esto?


La publicación a la que se refiere @daniel es de 2008. Rails ha cambiado desde entonces.
De hecho, bastante recientemente. Rails3 no carga el directorio lib / automáticamente.

Sin embargo, puedes reactivarlo con bastante facilidad. Abra config/application.rb Y agregue, en la configuración (en la clase Application ) el siguiente:

config.autoload_paths += %W(#{config.root}/lib)

Entonces su lib / dir se cargará automáticamente.


La razón por la que autoload_paths no funcionó para ti y te obligaron a hacerlo:

Dir["lib/**/*.rb"].each do |path| require_dependency path end

es porque olvidaste el espacio de nombres de tu clase .

lib / awesome / stuffs.rb debe contener una clase / módulo como este:

class/module Awesome::Stuffs ....

pero tuviste:

class/module Stuffs ....

Los raíles solo pueden autocargar clases y módulos cuyo nombre coincida con su ruta de archivo y nombre de archivo.

:)


Sigue la solución para que lib dir sea autocargado:

Eliminar config.threadsafe! de development.rb y production.rb ;

Agregar en config/application.rb :

config.autoload_paths += %W(#{config.root}/lib) config.threadsafe! config.dependency_loading = true


config.autoload_paths no funcionó para mí. Lo resolví poniendo lo siguiente en ApplicationController :

Dir["lib/**/*.rb"].each do |path| require_dependency path end