percorsi di file relativi
Domanda
Sto cercando di leggere da poche file utilizzando qualcosa di simile
IO.foreach("TeamFields.txt") { |line| fieldNames.push(line.chomp) }
Funziona bene quando si esegue la dalla riga di comando, ma quando ho pacchetto a un exe con le scarpe e correre non riesce a trovare il file. C'è un modo per specificare un percorso relativo alla exe o devo per fornire il percorso del file completo (ad esempio, "c: \ files \ TeamFields.txt")? Grazie per l'aiuto.
Soluzione
Questo perché il file eseguibile non viene eseguito con la directory corrente corretta.
In entrambi fissare la directory corrente (ad esempio nel collegamento) oppure modificare il programma di Ruby per impostare automaticamente la directory di lavoro alla directory programma con:
Dir.chdir(File.dirname($PROGRAM_NAME))
Altri suggerimenti
È necessario impostare "Directory Application corrente" in modo corretto prima di andare relativa. L'utente può eseguire la vostra applicazione con diverse start up dir, o il sistema può chiamare la vostra applicazione con diversi dir.
Se i file in questione sono nella cartella della vostra applicazione, l'unica cosa che devi fare è quello di ottenere quella cartella, e impostarlo a essere attuale.
Io non programma in Ruby, ma lo faccio con le finestre, e le probabilità sono il percorso relativo sarà basato sulla posizione del file exe.
Quindi, sì, siete probabilmente meglio passando un percorso completo per il nome del file.
Il __FILE__
costante conterrà il percorso completo del file attualmente in esecuzione. È quindi possibile utilizzare i metodi della classe File per togliere il nome del file, aggiungere il percorso relativo per qualsiasi altro file nel pacchetto che vuoi e risolvere il risultato.