Tengo un archivo de código Ruby (somelogic.rb) que contiene varios métodos y clases, ubicados en, por ejemplo,/home/usuario/código. Ahora estoy escribiendo otra clase en el mismo directorio y me gustaría hacer referencia a los métodos y clases en somelogic.rb. ¿Cómo puedo hacer eso? Agradezco mucho cualquier aporte.¿Cómo hacer referencia a un método en otro archivo de código Ruby?
Respuesta
Si está usando Ruby 1.9 o posterior, esta es la forma más sencilla de hacerlo:
require_relative 'somelogic'
Si desea que su código funcione en 1.9 y versiones anteriores de Ruby, usted debe hacer esto en su lugar:
require File.join File.dirname(__FILE__), 'somelogic'
Cualquiera que sea la línea que elija, debe ponerla en la parte superior de su archivo ruby. Entonces cualquier clase, módulo o variable global definida en somelogic.rb estará disponible para su programa.
Salida Ruby's require keyword
En segundo archivo (por ejemplo otherlogic.rb) escribir requerir '/home/user/code/somelogic.rb' en la primera línea.
Por favor, no hagas eso. Tu código no será portátil en absoluto. – mliebelt
Sé que solo estaba seguro de que el archivo se incluiría (1.9.2 tiene algún problema con 'require'). Si está en el mismo directorio, simplemente necesitará 'otherlogic.rb' –
Aquí está el panorama:
/home/user/code/somelogic.rb
class MyMath
def self.sin(number)
...
end
end
que desea utilizar los métodos sin
en su otro archivo mylogic.rb
.
Dependiendo de la versión de rubí, lleve a cabo uno lo siguiente:
patrónRuby 1.8.x
require "somelogic"
class OtherThings
def some_method
MyMath.sin(42)
end
end
El uso es para todas las versiones de rubí la misma, pero la declaración requerir puede ser diferente.
Ruby 1.9.x
require_relative "somelogic"
o variación
Ruby 1.9.x
require "./somelogic"
La primera variación funciona todo el tiempo, el segundo sólo si se llama ruby mylogic.rb
en el directorio donde se encuentran mylogic.rb
y somelogic.rb
.
Si desea cargar los archivos de ese directorio desde un punto de partida se encuentra en otro directorio, debe utilizar:
Ruby 1.8.x and Ruby 1.9.x
$: << File.dirname(__FILE__)
Esto expande el camino de carga de Ruby. Lee la ruta (relativa) de __FILE__
, obtiene su directorio y agrega la ruta (absoluta) de ese directorio a su ruta de carga. Entonces al hacer luego la búsqueda por require
, se encontrarán los archivos.
. Hay una diferencia importante entre 'require './Somelogic'' y' require_relative' somelogic''. Este último busca un archivo * relativo al guión en sí *, mientras que el primero se ve en el directorio de trabajo actual. Imagine que estamos en un directorio llamado "proyecto" y ejecutamos el programa Ruby "scripts/do_the_thing.rb". Si "do_the_thing.rb" usa 'require_relative', buscará" project/scripts/somelogic.rb ". Por otro lado, si hubiéramos escrito 'require './Somelogic'', buscaría" project/somelogic.rb ". – Chuck
Buen punto, lo agregaré a la respuesta. ¡Muchas gracias! – mliebelt
Agregando a lo que dijo Chuck, es malo hacer 'require './Somelogic'' porque eso hace una asunción sobre el directorio de trabajo actual del intérprete de ruby, por lo que hace que sea difícil volver a usar el código en otros proyectos. –
- 1. ¿Cómo hacer referencia a un archivo JScript desde otro?
- 2. cómo hacer referencia a un método principal en python?
- 3. Cómo hacer referencia a un método en el parámetro atributo
- 4. llame a un método de JavaScript en otro archivo .js
- 5. ¿Cómo hacer referencia a un nombre de método con un método en Python?
- 6. Copiando un archivo de un directorio a otro con Ruby
- 7. ¿Cómo se eligió un método sobre otro en este código?
- 8. ¿Es posible hacer referencia a un parámetro pasado a un método dentro del bloque pasado en ruby?
- 9. Hacer referencia a un esquema XSD dentro del archivo jar
- 10. Cuál es el equivalente a "Método de referencia" en Ruby
- 11. ¿Cómo copio un archivo de un servidor a otro?
- 12. Parámetro de referencia Javadoc desde otro método
- 13. Cómo hacer referencia/fuente de un archivo .vimrc personalizado
- 14. ¿Cómo hacer referencia a una DLL en el archivo web.config?
- 15. ¿Cómo pasar un bloque a otro en Ruby?
- 16. ¿Puede un script de Scala hacer referencia a otro código scala no compilado en el mismo directorio?
- 17. ¿Cómo puedo hacer referencia a un proyecto de otro en C#?
- 18. C#, xmlDoc: cómo hacer referencia a método sobrecargas
- 19. Llamar a un método miembro no estático desde otro método
- 20. ¿Puedo hacer que Ruby imprima el código fuente de un método dinámico?
- 21. Python: Cómo hacer referencia a un atributo de objeto llamar a un método
- 22. Archivo JS de referencia en Otro archivo JS e Intellisense
- 23. Cómo hacer referencia a un estilo en un tema personalizado
- 24. ¿Cómo puedo hacer referencia a #defines en un archivo C de python?
- 25. Nodo JS - Llamar a un método desde otro método en el mismo archivo
- 26. ¿Cómo hacer referencia a una cadena de otro paquete en una biblioteca usando XML en Android?
- 27. ¿Es un código malicioso que un método dependa de otro?
- 28. ¿Cómo puedo obtener una referencia a un método?
- 29. ¿Cómo debo incluir un archivo js de otro archivo js?
- 30. Cómo establecer la referencia de un objeto JSON a otro en el archivo JSON
requieren 'somelogic' –