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

ruby-on-rails - que - ruby on rails tutorial



¿Cómo difiere la carga de require en Ruby? (2)

¿Hay alguna diferencia importante entre la load y la necesidad en las aplicaciones de Ruby on Rails? ¿O ambos tienen la misma funcionalidad?


Otra diferencia entre Kernel#require y Kernel#load es que Kernel#load toma un segundo argumento opcional que le permite envolver el código cargado en un módulo vacío anónimo.

Lamentablemente, no es muy útil. En primer lugar, es fácil que el código de load ed salga del módulo, simplemente accediendo al espacio de nombres global, es decir, todavía pueden parchear algo como class ::String; def foo; end end class ::String; def foo; end end class ::String; def foo; end end Y segundo, load no devuelve el módulo en el que envuelve el código, por lo que básicamente tiene que extraerlo de ObjectSpace::each_object(Module) a mano.


require búsquedas de la biblioteca en todas las rutas de búsqueda definidas y también agrega .rb o .so al nombre de archivo que ingrese. También se asegura de que una biblioteca solo se incluya una vez. Por lo tanto, si su aplicación requiere la biblioteca A y B y la biblioteca B, la biblioteca A también se cargará una vez.

Con la load , debe agregar el nombre completo de la biblioteca y se carga cada vez que se load , incluso si ya está en la memoria.