2014-09-28 38 views
3

我做railstutorial的草案版本,当我尝试运行bundle exec rake test:models我收到此错误信息:束EXEC耙测试:机型抛出变量Errno :: EACCES:权限被拒绝

rake aborted! 
Errno::EACCES: Permission denied - C:/Users/Alex/Desktop/Workspace/Rails/sample_ 
app/db/test.sqlite3 
C:/Users/Alex/Desktop/Workspace/Rails/sample_app/test/test_helper.rb:3:in `<top 
(required)>' 
C:/Users/Alex/Desktop/Workspace/Rails/sample_app/test/helpers/application_helper 
_test.rb:1:in `<top (required)>' 
Tasks: TOP => test:run => test:units 
(See full trace by running task with --trace) 

随着--trace :

** Invoke test (first_time) 
** Execute test 
** Invoke test:run (first_time) 
** Invoke test:units (first_time) 
** Invoke test:prepare (first_time) 
** Execute test:prepare 
** Execute test:units 
rake aborted! 
Errno::EACCES: Permission denied - C:/Users/Alex/Desktop/Workspace/Rails/sample_ 
app/db/test.sqlite3 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/2.0.0/fileutils.rb:1432:in `unlink' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/2.0.0/fileutils.rb:1432:in `block in remove 
_file' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/2.0.0/fileutils.rb:1440:in `platform_suppor 
t' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/2.0.0/fileutils.rb:1431:in `remove_file' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/2.0.0/fileutils.rb:785:in `remove_file' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/2.0.0/fileutils.rb:563:in `block in rm' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/2.0.0/fileutils.rb:562:in `each' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/2.0.0/fileutils.rb:562:in `rm' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/activerecord-4.2.0.beta1/li 
b/active_record/tasks/sqlite_database_tasks.rb:22:in `drop' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/activerecord-4.2.0.beta1/li 
b/active_record/tasks/sqlite_database_tasks.rb:26:in `purge' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/activerecord-4.2.0.beta1/li 
b/active_record/tasks/database_tasks.rb:159:in `purge' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/activerecord-4.2.0.beta1/li 
b/active_record/tasks/database_tasks.rb:201:in `load_schema_for' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/activerecord-4.2.0.beta1/li 
b/active_record/tasks/database_tasks.rb:216:in `block in load_schema_current' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/activerecord-4.2.0.beta1/li 
b/active_record/tasks/database_tasks.rb:255:in `block in each_current_configurat 
ion' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/activerecord-4.2.0.beta1/li 
b/active_record/tasks/database_tasks.rb:254:in `each' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/activerecord-4.2.0.beta1/li 
b/active_record/tasks/database_tasks.rb:254:in `each_current_configuration' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/activerecord-4.2.0.beta1/li 
b/active_record/tasks/database_tasks.rb:215:in `load_schema_current' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/activerecord-4.2.0.beta1/li 
b/active_record/migration.rb:402:in `load_schema_if_pending!' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/activerecord-4.2.0.beta1/li 
b/active_record/migration.rb:409:in `block in maintain_test_schema!' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/activerecord-4.2.0.beta1/li 
b/active_record/migration.rb:637:in `suppress_messages' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/activerecord-4.2.0.beta1/li 
b/active_record/migration.rb:414:in `method_missing' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/activerecord-4.2.0.beta1/li 
b/active_record/migration.rb:409:in `maintain_test_schema!' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/railties-4.2.0.beta1/lib/ra 
ils/test_help.rb:19:in `<top (required)>' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/activesupport-4.2.0.beta1/l 
ib/active_support/dependencies.rb:248:in `require' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/activesupport-4.2.0.beta1/l 
ib/active_support/dependencies.rb:248:in `block in require' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/activesupport-4.2.0.beta1/l 
ib/active_support/dependencies.rb:233:in `load_dependency' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/activesupport-4.2.0.beta1/l 
ib/active_support/dependencies.rb:248:in `require' 
C:/Users/Alex/Desktop/Workspace/Rails/sample_app/test/test_helper.rb:3:in `<top 
(required)>' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/activesupport-4.2.0.beta1/l 
ib/active_support/dependencies.rb:248:in `require' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/activesupport-4.2.0.beta1/l 
ib/active_support/dependencies.rb:248:in `block in require' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/activesupport-4.2.0.beta1/l 
ib/active_support/dependencies.rb:233:in `load_dependency' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/activesupport-4.2.0.beta1/l 
ib/active_support/dependencies.rb:248:in `require' 
C:/Users/Alex/Desktop/Workspace/Rails/sample_app/test/helpers/application_helper 
_test.rb:1:in `<top (required)>' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/activesupport-4.2.0.beta1/l 
ib/active_support/dependencies.rb:248:in `require' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/activesupport-4.2.0.beta1/l 
ib/active_support/dependencies.rb:248:in `block in require' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/activesupport-4.2.0.beta1/l 
ib/active_support/dependencies.rb:233:in `load_dependency' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/activesupport-4.2.0.beta1/l 
ib/active_support/dependencies.rb:248:in `require' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/railties-4.2.0.beta1/lib/ra 
ils/test_unit/sub_test_task.rb:114:in `block (3 levels) in define' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/railties-4.2.0.beta1/lib/ra 
ils/test_unit/sub_test_task.rb:114:in `each' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/railties-4.2.0.beta1/lib/ra 
ils/test_unit/sub_test_task.rb:114:in `block (2 levels) in define' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/railties-4.2.0.beta1/lib/ra 
ils/test_unit/sub_test_task.rb:113:in `each' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/railties-4.2.0.beta1/lib/ra 
ils/test_unit/sub_test_task.rb:113:in `block in define' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/rake-10.3.2/lib/rake/task.r 
b:240:in `call' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/rake-10.3.2/lib/rake/task.r 
b:240:in `block in execute' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/rake-10.3.2/lib/rake/task.r 
b:235:in `each' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/rake-10.3.2/lib/rake/task.r 
b:235:in `execute' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/rake-10.3.2/lib/rake/task.r 
b:179:in `block in invoke_with_call_chain' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/2.0.0/monitor.rb:211:in `mon_synchronize' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/rake-10.3.2/lib/rake/task.r 
b:172:in `invoke_with_call_chain' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/rake-10.3.2/lib/rake/task.r 
b:201:in `block in invoke_prerequisites' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/rake-10.3.2/lib/rake/task.r 
b:199:in `each' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/rake-10.3.2/lib/rake/task.r 
b:199:in `invoke_prerequisites' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/rake-10.3.2/lib/rake/task.r 
b:178:in `block in invoke_with_call_chain' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/2.0.0/monitor.rb:211:in `mon_synchronize' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/rake-10.3.2/lib/rake/task.r 
b:172:in `invoke_with_call_chain' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/rake-10.3.2/lib/rake/task.r 
b:165:in `invoke' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/railties-4.2.0.beta1/lib/ra 
ils/test_unit/sub_test_task.rb:20:in `invoke_rake_task' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/railties-4.2.0.beta1/lib/ra 
ils/test_unit/testing.rake:8:in `block in <top (required)>' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/rake-10.3.2/lib/rake/task.r 
b:240:in `call' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/rake-10.3.2/lib/rake/task.r 
b:240:in `block in execute' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/rake-10.3.2/lib/rake/task.r 
b:235:in `each' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/rake-10.3.2/lib/rake/task.r 
b:235:in `execute' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/rake-10.3.2/lib/rake/task.r 
b:179:in `block in invoke_with_call_chain' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/2.0.0/monitor.rb:211:in `mon_synchronize' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/rake-10.3.2/lib/rake/task.r 
b:172:in `invoke_with_call_chain' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/rake-10.3.2/lib/rake/task.r 
b:165:in `invoke' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/rake-10.3.2/lib/rake/applic 
ation.rb:150:in `invoke_task' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/rake-10.3.2/lib/rake/applic 
ation.rb:106:in `block (2 levels) in top_level' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/rake-10.3.2/lib/rake/applic 
ation.rb:106:in `each' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/rake-10.3.2/lib/rake/applic 
ation.rb:106:in `block in top_level' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/rake-10.3.2/lib/rake/applic 
ation.rb:115:in `run_with_threads' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/rake-10.3.2/lib/rake/applic 
ation.rb:100:in `top_level' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/rake-10.3.2/lib/rake/applic 
ation.rb:78:in `block in run' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/rake-10.3.2/lib/rake/applic 
ation.rb:176:in `standard_exception_handling' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/rake-10.3.2/lib/rake/applic 
ation.rb:75:in `run' 
C:/RailsInstaller/Ruby2.0.0/lib/ruby/gems/2.0.0/gems/rake-10.3.2/bin/rake:33:in 
`<top (required)>' 
C:/RailsInstaller/Ruby2.0.0/bin/rake:23:in `load' 
C:/RailsInstaller/Ruby2.0.0/bin/rake:23:in `<main>' 
Tasks: TOP => test:run => test:units 

我已经尝试检查我的db文件夹的权限,并试图重新启动一切。我在Windows上使用rails版本4.2.0beta1。当我制作“用户”模型时,问题就开始了。我试着回滚,并再次迁移。

编辑: 看来我的测试数据库以某种方式损坏了。如果我将/config/database.yml测试更改为/db/development.sqlite,则测试工作正常。

回答

7

我删除了旧的test.sqlite3,并将其替换为一个development.sqlite3的副本,并将其重命名为test.sqlite3,这似乎解决了这个问题。

+2

嗯它也解决了我的问题,但问题是为什么它的发生 – Dexture 2014-11-27 10:15:29

+0

是的,我也想知道这一点,它不断发生的定期和此修复似乎只是对实际问题的症状临时破解。但是我最近把我的开发从windows 8改成了kubuntu,而且我还没有再次体验过它。 @Dexture你的操作系统是什么?知道它是否真的是一个Windows问题可能有助于理解“为什么”... – madstap 2014-11-27 19:50:33

+0

窗口,但昨晚我终于在虚拟机上安装Fedora。这就是为什么大多数开发人员更喜欢窗口的轨道。 – Dexture 2014-11-28 06:18:24

6

在运行测试之前运行rake db:migrate RAILS_ENV=test

我不是一个rails专家,所以我不知道是否应该在迁移开发数据库时自动迁移测试数据库,但是这会迁移它,并且它解决了类似的问题。

注意:我的操作系统是Windows 8.1

0

是的,问题出在Windows上。当您阅读在railsinstaller目录中找到的fileutils.rb的代码时。它想要取消链接,并且要给予权限700(在unix/linux中),但不能在Windows中。所以不会工作。

以下是fileutil.rb文件的代码片段。

def remove_file 
    platform_support { 
    File.unlink path 
    } 
end 

def platform_support 
    return yield unless fu_windows? 
    first_time_p = true 
    begin 
    yield 
    rescue Errno::ENOENT 
    raise 
    rescue => err 
    if first_time_p 
     first_time_p = false 
     begin 
     File.chmod 0700, path() # Windows does not have symlink 
     retry 
     rescue SystemCallError 
     end 
    end 
    raise err 
    end 
end 
0

我注意到这种情况,如果我有一个终端打开运行rails服务器和另一个终端工作。我的工作终端是什么给我这个问题,当我尝试删除或重置数据库。我关闭服务器并再次尝试,它工作正常。

相关问题