2009-08-05 3 views
8

Ich bin nicht in der Lage Rake Test auszuführen: Funktionalen mit SQLite3, es gibt mir diese Fehlermeldung:Rails: Test Rake: Funktionalen kann nicht auf DB (Sqlite3 auf winXP)

rake aborted! 
Permission denied - db/test.sqlite 

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

Mein Setup ist auf Windows XP. Tests haben vor ein paar Wochen funktioniert. Schienen 2.3.2, Rake 0.8.7, sqlite3-ruby 1.2.5 Edelsteine ​​

Ich verwende Netbeans für die Entwicklung, aber selbst wenn es in der Nähe ist, kann ich den Test nicht von einer Eingabeaufforderung ausführen.

Ich habe auch überprüft, dass keine Handles zu test.sqlite offen sind (über den Taskmanager sysinternals).

Ich habe die Berechtigungen überprüft, sie sind in Ordnung.

Ich habe versucht, die Datei zu löschen und neu zu erstellen, oder kopieren Sie auf einen anderen Dateinamen ohne Glück auch nicht.

Ich habe versucht, den Befehl auszuführen, sobald mein Computer gebootet wird.

Jede Hilfe wird geschätzt.

Dank

+0

andere Befehle wie Rake db: migrieren oder löschen oder klonen arbeiten an dieser Datenbank. Es ist nur ein Test: Funktionale, die fehlschlagen. – user62605

Antwort

1

Wenn Sie unter Cygwin laufen lassen, versuchen Sie, diese auf Ihre Datenbankdateien:

chmod 777 <your-files> 

Cygwin über verwechselt werden können, welche Berechtigungen angewendet werden sollte.

Ja, ich weiß, dass diese Berechtigungen sind lächerlich, aber so ist Cygwin manchmal ...

+0

Nein, ich laufe unter Windows. Versuchte es trotzdem und funktionierte nicht. – user62605

2

Sehr, sehr ähnliches Verhalten meinerseits: Windows XP, SQLite3, Rails 2.3.4, 0.8.7 Rake, Ruby 1.8 .6

Rake Test

Werke (aber ich glaube nicht, dass das Gerät Test tatsächlich läuft)

Rake Test: Einheiten

und

Rake Test: Funktionale

beide nicht mit einem "Zugriff verweigert - db/test.sqlite3" Mit --trace aktivierten die spezifischer Fehler tritt bei ../rails-2.3.4/lib/task/databases.rake:370 in einer Zeile auf, die lautet "File.delete (dbfile) if File.exist? (dbfile)

So ... lange Geschichte sho rt ... ich habe es auskommentiert.

Dies ist kein Fix, aber es war genug von einem Hack, um die Tests für mich arbeiten zu lassen.

+0

Diese Zeile scheint mir auch das Problem zu sein ... nicht sicher, was ich dagegen tun soll! – aardvarkk

3

Ich hatte gerade dieses Problem. Für mich wurde es dadurch verursacht, dass ich meine Rails-Konsole in einer Testumgebung geöffnet habe. Ich habe meine Sitzung geschlossen und der Fehler wurde nicht mehr angezeigt.

0

ich auch dieses Problem wurde erlebt und fand ich den Täter ein initializer in einem Motor zu sein, der die Datenbank während der Umwelt Belastung wurde die Abfrage und die sqlite3-Datei zu verhindern, dass sie gelöscht werden:

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 

ich es behoben indem Sie die DB-Anforderung vom Initializer entfernen.

Das Seltsame an dem Problem war, dass die Tests funktionieren würden, wenn sie für die Engine ausgeführt werden, aber nicht, wenn die Engine in einem Projekt bereitgestellt wurde, würde dies dazu führen, dass alle Tests des Projekts fehlschlagen.

Verwandte Themen