Ho un file di codice Ruby (somelogic.rb) che contiene diversi metodi e classi, situati in dire,/home/utente/codice. Ora sto scrivendo un'altra classe nella stessa directory e vorrei fare riferimento ai metodi e alle classi in somelogic.rb. Come lo faccio? Apprezzo molto qualsiasi input.Come fare riferimento a un metodo in un altro file di codice Ruby?
risposta
Se si utilizza Ruby 1.9 o versione successiva, questo è il modo più semplice per farlo:
require_relative 'somelogic'
Se si desidera che il codice per lavorare in 1,9 anni e più versioni di Ruby, si dovrebbe fare questo, invece:
require File.join File.dirname(__FILE__), 'somelogic'
Qualsiasi riga si scelga, si dovrebbe mettere nella parte superiore del file rubino. Quindi qualsiasi classe, modulo o variabile globale definita in somelogic.rb sarà disponibile per il tuo programma.
Partenza Ruby's require keyword
Nel secondo file (diciamo otherlogic.rb) scrivere require '/home/user/code/somelogic.rb' in prima linea.
Per favore, non farlo. Il tuo codice non sarà per niente portatile. – mliebelt
So che ero solo sicuro che il file sarebbe stato incluso (1.9.2 ha qualche problema con 'require'). Se ti trovi nella stessa directory devi solo richiedere 'otherlogic.rb' –
Ecco lo scenario:
/home/user/code/somelogic.rb
class MyMath
def self.sin(number)
...
end
end
si desidera utilizzare i metodi sin
nel tuo altro file mylogic.rb
.
A seconda della versione di Ruby, effettuare una delle seguenti operazioni:
Ruby 1.8.x
require "somelogic"
class OtherThings
def some_method
MyMath.sin(42)
end
end
L'uso modello è per tutte le versioni rubino lo stesso, ma la dichiarazione richiedono potrebbe essere diverso.
Ruby 1.9.x
require_relative "somelogic"
o variazione
Ruby 1.9.x
require "./somelogic"
La prima variazione lavora tutto il tempo, il secondo solo se si chiama ruby mylogic.rb
nella directory in cui si trovano mylogic.rb
e somelogic.rb
.
Se si desidera caricare i file da quella directory da un punto di partenza si trova in un'altra directory, è necessario utilizzare:
Ruby 1.8.x and Ruby 1.9.x
$: << File.dirname(__FILE__)
Questo espande il percorso di carico di Ruby. Legge il percorso (relativo) di __FILE__
, ottiene la sua directory e aggiunge il percorso (assoluto) di tale directory al percorso di caricamento. Quindi, quando si effettua la ricerca tramite require
, i file verranno trovati.
C'è una differenza importante tra 'require './Somelogic'' e' require_relative' somelogic''. Quest'ultimo cerca un file * relativo allo script stesso *, mentre il primo cerca nella directory di lavoro corrente. Immagina di trovarci in una directory chiamata "progetto" e lanciamo il programma Ruby "scripts/do_the_thing.rb". Se "do_the_thing.rb" usa 'require_relative', cercherà" project/scripts/somelogic.rb ". D'altra parte, se avessimo scritto 'require './Somelogic'', cercherebbe" project/somelogic.rb ". – Chuck
Buon punto, lo aggiungerò alla risposta. Molte grazie! – mliebelt
Aggiungendo a ciò che ha detto Chuck, è brutto fare 'require'./Somelogic'' perché questo fa un riassunto sull'attuale directory di lavoro dell'interprete ruby, quindi rende difficile riutilizzare il codice in altri progetti. –
- 1. Come fare riferimento a un file JScript da un altro?
- 2. Come fare riferimento a file locali in un modulo npm?
- 3. java8: riferimento metodo da un altro metodo riferimento
- 4. È possibile fare riferimento a un parametro passato a un metodo all'interno del blocco passato in ruby?
- 5. Come posso collegare/fare riferimento a un altro file di ripristino nella documentazione?
- 6. Come passare un blocco a un altro in Ruby?
- 7. Come fare riferimento a un riferimento di file di risorse di icona in XAML
- 8. Come fare riferimento/origine di un file .vimrc personalizzato
- 9. Come fare riferimento a un altro progetto in Eclipse con il progetto Appengine di Google?
- 10. Metodo di riferimento. Non è possibile fare un riferimento statico per il metodo non statico
- 11. Creazione di un oggetto sullo stack passando poi per riferimento a un altro metodo in C++
- 12. Impossibile fare riferimento a un assieme in un modello T4
- 13. Come fare riferimento a uno stile in un tema personalizzato
- 14. Param di riferimento Javadoc da un altro metodo
- 15. Come utilizzare getUrl() in Magento per fare riferimento a un altro modulo?
- 16. Python: Come fare riferimento ad attributo oggetto chiamare un metodo
- 17. Come trasformare un metodo Ruby in un blocco?
- 18. È possibile fare riferimento a una chiave esterna in un altro database in Laravel?
- 19. Perché posso assegnare un nuovo valore a un riferimento e come posso fare riferimento a qualcos'altro?
- 20. Come fare riferimento a un documento incorporato in Mongoid?
- 21. Come posso fare riferimento a un sottodominio relativo in HTML?
- 22. Come aggiungere riferimento a un parametro di metodo in javadoc?
- 23. Come posso fare riferimento a #defines in un file C da python?
- 24. Il blocco pass passato al metodo in un altro metodo in Ruby
- 25. Come fare riferimento a un nome di variabile con spazi?
- 26. Codice quadro entità prima - Configurazione in un altro file
- 27. Come impostare il riferimento di un oggetto JSON a un altro nel file JSON
- 28. Controllare se un metodo è un alias a un altro metodo in rspec
- 29. Come programmare a livello di codice un file eseguibile con un PFX (Castello gonfiabile o altro)
- 30. Nozioni di base per fare riferimento a uno schema xsd da un altro schema
richiedere 'somelogic' –