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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top