2012-03-29 70 views
0

为什么我们得到的命令耙分贝的错误:迁移耙分贝:迁移RAILS_ENV =发展

Rails Error: Unable to access log file. Please ensure that /home/mahaloo/mahaloo/releases/20120329200051/log/development.log exists and is chmod 0666. The log level has been raised to WARN and the output directed to STDERR until the problem is fixed. 

rake aborted! 
unable to open database file 

Tasks: TOP => db:migrate 
(See full trace by running task with --trace) 

请告诉我错在那里。我试图部署通过capistrano,我用这个教程设置capistrano http://teachmetocode.com/screencasts/basic-deployment-with-capistrano/

回答

1

你要么丢失日志目录或文件。你是否运行cap deploy:setup?

否则,请先手动创建日志文件。

+0

感谢@Isotope我触及了development.log并将r/w权限设置为0666,但rake始终中止。 – amarradi 2012-03-31 13:03:50

+0

如果您没有写入日志目录,那么'cap deploy:check'将失败。当然,你已经运行了'cap deploy:setup'和'cap deploy:check',并且修复了所有问题。您可能会缺少database.yml,因为它不在scm中,请参阅下面的答案。 – tehfoo 2013-03-14 19:33:02

0

这可能是因为你正在遵循不检查你的database.yml到源代码控制的做法。如果是这种情况,您可以在部署shared/config文件夹中创建database.yml的副本,然后创建一个Capistrano任务,将其重新链接到您的发布文件夹中。像这样的东西(在namespace deploy

task :create_symlinks do 
    run "ln -nfs #{shared_path}/db/production.sqlite3 #{release_path}/db/production.sqlite3" 
    run " -nfs #{shared_path}/config/ldap.yml #{release_path}/config/ldap.yml" 
    run "ln -nfs #{shared_path}/config/database.yml #{release_path}/config/database.yml" 
end 

然后调用这一个钩子

after "deploy:finalize_update", "deploy:create_symlinks" 
after "deploy:finalize_update", "deploy:migrate" 

我认为这工作,这也是我们当初是在我们的项目加紧。这类似于这样的问题:

database.yml deployment best practice Capistrano - can't deploy my database.yml How to manage Rails database.yml

0

有,如果你尝试用sudo您的环境及其在Linux上,例如,我得到的错误尝试运行的迁移,rake db:migrate,所以我用sudo rake db:migrate这就是工作,也许是因为它试图咨询development.log时的耙子没有正确的权限或类似的东西。