Ruby on rails Rails:Rake测试:函数无法访问DB(winXP上的Sqlite3)

Ruby on rails Rails:Rake测试:函数无法访问DB(winXP上的Sqlite3),ruby-on-rails,windows,sqlite,rubygems,rake,Ruby On Rails,Windows,Sqlite,Rubygems,Rake,我无法使用SQLite3运行rake test:functionals,它给了我以下错误: 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进行开发,但即使它已经关闭,我

我无法使用SQLite3运行rake test:functionals,它给了我以下错误:

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任务管理器)

我检查了权限,没有问题

我试图删除文件并重新创建它,或者复制到另一个文件名,但也没有任何运气

我尝试在计算机启动后立即运行该命令

感谢您的帮助


谢谢

如果您在Cygwin下运行,请尝试在您的数据库文件上运行:

chmod 777 <your-files>
chmod 777
Cygwin可能会对应该应用哪些权限感到困惑


是的,我知道这些权限很荒谬,但Cygwin有时也是如此…

我的行为非常非常相似:Windows XP、SQLite3、Rails 2.3.4、Rake 0.8.7、Ruby 1.8.6

耙试验

有效(但我不相信它实际上正在运行单元测试)

耙试验:单位

rake测试:泛函

两者都失败,出现“权限被拒绝-db/test.sqlite3” 启用--trace时,特定错误出现在../rails-2.3.4/lib/task/databases.rake:370的一行,该行的内容为“File.delete(dbfile)if File.exist?(dbfile)

所以…长话短说…我把它注释掉了


这不是一个修复程序,但它已经足够让测试为我工作了。

只是一个赌注,但是您是否尝试过将
config/database.yml中的路径更改为

database: db\test.sqlite3

i、 e.反斜杠而不是正斜杠。甚至是一个完整的dos样式路径。问题可能与此有关。

我刚刚遇到了这个问题。对我来说,这是因为我在测试环境中打开了rails控制台。关闭了会话,它不再抛出错误。

我也遇到了这个问题,我发现罪魁祸首是引擎中的初始值设定项,该初始值设定项在环境加载期间查询数据库并防止删除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
模块框架
类引擎<::Rails::引擎
隔离名称空间框架
#导致问题的发动机初始值设定项。
初始值设定项“frame.wrap_参数”do
ActiveSupport.on_load(:action_controller)do
如果响应?(:包装参数)
#这是问题行,Link是一个模型,Link.attribute\u是一个名称
#正在访问数据库。
包装参数链接,包括:Link.attribute\u names+[:parent\u id]
结束
结束
结束
结束
结束
我通过从初始化器中删除DB需求来修复它


这个问题的奇怪之处在于,在为引擎运行测试时,测试可以工作,但在项目中安装引擎时,测试不会工作,这会导致项目的所有测试失败。

不,我正在Windows下运行。尽管如此,我还是试过了,但没有工作。其他命令,如rake db:migrate或purge或clone正在该数据库上工作。这是唯一的测试:函数失败。这一行似乎也是我的问题…但不知道该怎么办!