0

为什么我们在命令 rake db:migrate 上收到错误

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/

4

3 回答 3

1

您要么缺少日志目录或文件。你有运行 cap deploy:setup 吗?

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

于 2012-03-29T20:28:57.487 回答
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 部署最佳实践 Capistrano - 无法部署我的 database.yml 如何管理 Rails database.yml

于 2013-03-14T19:30:48.413 回答
0

如果您的环境在 linux 上,您是否尝试过sudo,例如,我在尝试运行迁移时遇到了那个错误rake db:migrate,所以我使用sudo rake db:migrate了它,这很有效,可能是因为它试图咨询 development.log 时的 rake 没有正确的权限或类似的东西。

于 2015-06-17T03:39:30.660 回答