Rails: тест Rake: функционалы не могут получить доступ к БД (Sqlite3 на winXP) - PullRequest
8 голосов
/ 05 августа 2009

Я не могу запустить тест rake: функционал с SQLite3, он выдает мне эту ошибку:

rake aborted!
Permission denied - db/test.sqlite

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

Моя настройка на Windows XP. Тесты работали несколько недель назад. Rails 2.3.2, Rake 0.8.7, sqlite3-ruby 1.2.5 gems

Я использую Netbeans для разработки, но даже когда он близко, я не могу запустить тест из командной строки.

Я также проверил, не открыты ли дескрипторы для test.sqlite (через диспетчер задач sysinternals).

Я проверил разрешения, они в порядке.

Я попытался удалить файл и воссоздать его или скопировать на другое имя файла, но безуспешно.

Я попытался запустить команду, как только мой компьютер загрузился.

Любая помощь приветствуется.

Спасибо

Ответы [ 5 ]

3 голосов
/ 14 сентября 2011

У меня только что была эта проблема. Для меня это было вызвано тем, что моя консоль рельсов была открыта в тестовой среде. Закрыл мой сеанс, и он больше не выдавал ошибку.

2 голосов
/ 17 сентября 2010

Очень, очень похожее поведение с моей стороны: Windows XP, SQLite3, Rails 2.3.4, Rake 0.8.7, Ruby 1.8.6

тест граблей

работает (но я не верю, что на самом деле выполняется модульное тестирование)

тест рейка: единицы

и

тест граблей: функционалы

оба сбоя с «Отказано в доступе - db / test.sqlite3» При включенной опции --trace конкретная ошибка возникает по адресу ../rails-2.3.4/lib/task/databases.rake:370 в строке, которая гласит «File.delete (dbfile), если File.exist? (Dbfile) * 1019» *

Итак ... Короче говоря ... Я прокомментировал это.

Это НЕ исправление, но этого было достаточно, чтобы заставить тесты работать на меня.

1 голос
/ 05 августа 2009

Если вы работаете в Cygwin, попробуйте запустить это для файлов базы данных:

chmod 777 <your-files>

Cygwin может запутаться в том, какие разрешения следует применять.

Да, я знаю, что эти разрешения смешны, но иногда и Cygwin ...

0 голосов
/ 05 марта 2014

Я тоже столкнулся с этой проблемой и обнаружил, что виновником является инициализатор в движке, который запрашивает базу данных во время загрузки среды и не позволяет удалить файл sqlite3:

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

Я исправил это, убрав требование к БД из инициализатора.

Странная вещь в этой проблеме заключалась в том, что тесты будут работать при запуске их для двигателя, но не тогда, когда двигатель был смонтирован в проекте, это приведет к сбою всех испытаний проекта.

0 голосов
/ 18 сентября 2010

Просто пунт, но вы пытались изменить путь в config/database.yml на

database: db\test.sqlite3

т.е. обратная косая черта вместо прямой. Или даже полный путь стиля душ. Проблема может быть связана с этим https://rails.lighthouseapp.com/projects/8994/tickets/4153-dbcreate-cannot-open-database-for-sqlite3-on-windows-with-cygwin

...