262 votos

¿Cuál es la diferencia entre require_relative y requieren en Ruby?

¿Cuál es la diferencia entre require_relative y require en Ruby?

274voto

miku Puntos 63392

Basta con mirar en el google docs:

require_relative complementa el grupo builtin método require permitiéndole cargar un archivo que es relativo a el archivo que contiene la require_relative declaración.

Por ejemplo, si usted tiene pruebas unitarias de clases en la "prueba" del directorio, y los datos de ellos en virtud de la prueba "test/datos de directorio", entonces usted podría utilizar una línea como esta en un caso de prueba:

require_relative "data/customer_data_1"

71voto

svilenv Puntos 949

A partir de API Ruby:

require_relative complementa la builtin método requiere por lo que le para cargar un archivo que es relativo a la archivo que contiene la require_relative declaración.

Cuando se utiliza requieren para cargar un archivo, normalmente el acceso a la funcionalidad que ha sido debidamente instalado y accesible, en su sistema. requieren no ofrecen un buena solución para la carga de archivos dentro de el código del proyecto. Esto puede ser útil durante una fase de desarrollo, para el acceso a los datos de prueba, o incluso para el acceso a los archivos que están "bloqueados" dentro de un proyecto, no destinados a la fuera de uso.

Por ejemplo, si usted tiene la prueba de unidad clases en la "prueba" del directorio, y los datos por ellos en virtud de la prueba "prueba/datos de directorio", entonces usted podría el uso de una línea como esta en un caso de prueba:

require_relative "data/customer_data_1" 

Ya que ni "test" o "test/datos" probablemente estar en Rubí de la ruta de la biblioteca (y para una buena razón), normal no requieren encontrarlos. require_relative es un buen la solución para este problema en particular.

Usted puede incluir u omitir la extensión de (.rb o .so) del archivo que se de carga.

ruta de acceso debe responder a to_str.

Usted puede encontrar la documentación en http://extensions.rubyforge.org/rdoc/classes/Kernel.html

11voto

mech Puntos 188

Acabo de ver código de la RSpec tiene algún comentario require_relative siendo constante o (1) y require siendo O(N) lineal. Así que probablemente la diferencia es que require_relative es el preferido de require .

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X