2014-12-08 7 views
5

L'errore:Errno :: ETXTBSY: File di testo occupato @ unlink_internal

Errno :: ETXTBSY: File di testo occupato @ unlink_internal - /home/vagrant/shared/sample_app/db/test.sqlite3 /home/vagabondo /shared/sample_app/test/test_helper.rb:3:in <top (required)>' /home/vagrant/shared/sample_app/test/helpers/static_pages_helper_test.rb:1:in ' compiti: TOP => Test: Run => di prova: unità (Visualizza intera traccia eseguendo un'attività con --trace)

risposta

4

Soluzione:

L'errore era correlato a Vagrant (o VirtualBox) c ustom cartelle condivise. Non riuscivo a capire come risolverlo, ma c'è una soluzione alternativa. Invece di lavorare con una cartella condivisa personalizzata vagabonda (~/shared/sample_app), definito nel vagrantfile ho spostato la cartella applicazione in una cartella condivisa di serie all'interno della radice VM (/ vagabondo). Ora continuo a ricevere il file sync nel mio computer host e il problema è scomparso.


UPDATE 1

raggiunto un altro conclusione oggi. Ogni volta che viene eseguito bundle exec rake db:migrate o rails generate migration, l'errore ritorna.

Un'altra soluzione
1 - Eliminare il file test.sqlite3.
2 - Copiare il file development.sqlite3
3 - Incolla e cambiare il nome al test.sqlite3

* - Proprio migrato per il test e questa sembra essere una soluzione permanente.

+1

Ho appena passato attraverso questo con VirtualBox (sans Vagrant), e ha raggiunto la stessa conclusione. Ho usato ProcessMonitor sul lato Windows per vedere se qualche altro processo stava contendendo per il file del database di test mentre veniva creato (poiché l'eliminazione manuale del file non è stata di aiuto), ad esempio un virus/scanner di rete o un processo di indicizzazione, ma potrebbe non trovare risposta. Ciò che non aveva senso era che funzionava bene per oltre un mese di normale sviluppo, e ha smesso di funzionare una mattina senza una ragione apparente (nessun cambiamento nella mia routine o configurazione di cui ero a conoscenza). –

+1

Ho anche cercato un gruppo senza trovare una risposta, quindi mi chiedo se si tratta di uno sviluppo recente. (Sono nella versione .18, non ho aggiornato a .20, sebbene abbia significato, ma allo stesso tempo non è stato un aggiornamento a cambiare le cose.) –

+1

E per ribadire, la mia soluzione era sposta il progetto in questione al di fuori della directory condivisa con il mio host Windows, a uno diverso all'interno del mio SO guest Linux. (E come detto, questo è solo con VirtualBox e non con Vagrant, nel caso in cui altri trovino questa domanda.) –

3

Sposta i file del database all'esterno della condivisione vagante, ad esempio in/tmp.

modificare database.yml:

development: 
    <<: *default 
    database: /tmp/project/development.sqlite3 

test: 
    <<: *default 
    database: /tmp/project/test.sqlite3 
+0

grazie, questo mi ha aiutato anche su VirtualBox (non sto usando vagabondo), ho appena spostato il file db dalla cartella condivisa – Ievgen

Problemi correlati