2014-09-28 37 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服務器和另一個終端工作。我的工作終端是什麼給我這個問題,當我嘗試刪除或重置數據庫。我關閉服務器並再次嘗試,它工作正常。

相關問題