2009-08-05 7 views
8

non sono in grado di eseguire test di rake: funzionali con SQLite3, mi dà questo errore:Rails: Rake Test: funzionali non possono accedere DB (Sqlite3 su WinXP)

rake aborted! 
Permission denied - db/test.sqlite 

(See full trace by running task with --trace) 

La mia configurazione è su Windows XP. I test hanno funzionato poche settimane fa. Rails 2.3.2, Rake 0.8.7, sqlite3-ruby 1.2.5 gemme

Sto utilizzando Netbeans per lo sviluppo, ma anche quando è chiuso non riesco a eseguire il test da un prompt dei comandi.

Ho anche verificato che nessun handle per test.sqlite sia aperto (tramite il task manager sysinternals).

Ho controllato le autorizzazioni, sono ok.

Ho provato a eliminare il file e ricrearlo, o copiare su un altro nome di file senza fortuna.

Ho provato a eseguire il comando non appena il computer viene avviato.

Qualsiasi aiuto è apprezzato.

Grazie

+0

altri comandi come rake db: migrazione o eliminazione o clonazione funzionano su questo database. È solo un test: i funzionali che falliscono. – user62605

risposta

1

Se si sta eseguendo sotto Cygwin, provare a eseguire questo sui file di database:

chmod 777 <your-files> 

Cygwin può diventare confuso su ciò che dovrebbero essere applicate le autorizzazioni.

Sì, lo so queste autorizzazioni sono ridicole, ma lo è anche Cygwin a volte ...

+0

No, sto utilizzando Windows. Provato lo stesso, e non funziona. – user62605

2

comportamento molto, molto simile da parte mia: Windows XP, SQLite3, Rails 2.3.4, Rastrello 0.8.7, Ruby 1.8 .6

prova rastrello

opere (ma non credo che in realtà è l'esecuzione del test di unità)

prova rake: unità

e prova

rake: Funzionali

entrambi falliscono con un "Permesso negato - db/test.sqlite3" Con --trace consentito alla errore specifico si verifica in ../rails-2.3.4/lib/task/databases.rake:370 in una riga che legge "File.delete (dbfile) if File.exist? (dbfile)

Quindi ... lunga storia rt ... ho commentato.

Questa NON è una correzione, ma è stato sufficiente un trucco per far funzionare i test per me.

+0

Quella linea sembra essere il problema anche per me ... non sono sicuro di cosa fare al riguardo! – aardvarkk

3

Ho appena avuto questo problema. Per me, è stato causato da me che ho aperto la console delle mie rotaie in un ambiente di test. Chiusa la mia sessione e non ha più gettato l'errore.

0

stavo sperimentando questo problema come bene e ho trovato il colpevole di essere un inizializzatore in un motore che è stato interrogare il database durante il carico ambiente e prevenire il file sqlite3 venga eliminato:

module Frame 
    class Engine < ::Rails::Engine 
    isolate_namespace Frame 

    # Engine initializer causing the problem. 
    initializer "frame.wrap_parameters" do 
     ActiveSupport.on_load(:action_controller) do 
     if respond_to?(:wrap_parameters) 

      # This is the problem line, Link is a model and Link.attribute_names 
      # is accessing the DB. 
      wrap_parameters Link, include: Link.attribute_names + [:parent_id] 

     end 
     end 
    end 

    end 
end 

ho riparato rimuovendo il requisito DB dall'intializer.

La cosa strana del problema era che i test avrebbero funzionato durante l'esecuzione per il motore, ma non quando il motore è stato montato in un progetto, avrebbe causato il fallimento di tutti i test del progetto.

Problemi correlati