部署后使用capistrano创建目录

时间:2012-07-29 09:49:00

标签: ruby-on-rails linux bash capistrano

我有deploy.rb文件,其中包含以下代码:

after :deploy do
  run "if [ -d #{rails_root}/tmp/pids ]; then mkdir #{rails_root}/tmp/pids && chmod 0777 #{rails_root}/tmp/pids; fi"
end

有麻烦,你可以看到@终端截图: enter image description here

同样的问题是日志目录,但它只是从git repo克隆(通过capistrano)。当我克隆项目manualy时 - 日志目录运行良好。 enter image description here

两个问题:

  1. 什么是pids / log“dir”,如果它不是文件或目录或其他什么?
  2. 我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

一些建议:

man test显示

-d file       True if file exists and is a directory.

所以你可能意味着如果[! -d xxx / tmp / pids];

为了更容易试用,只需在临时目录中运行shell命令:

if [ ! -d xxx/tmp/pids ]; then mkdir xxx/tmp/pids && chmod 0777 xxx/tmp/pids; fi
如果路径中的dirs不存在,则mkdir失败 - 使用mkdir -p

if [ ! -d xxx/tmp/pids ]; then mkdir -p xxx/tmp/pids && chmod 0777 xxx/tmp/pids; fi

应该按照你的意图行事。

(截图非常难以解读。如果您想获得有关文件类型的更多信息,请使用ls -l而不是复制文本输出,而不是主要显示背景图像的屏幕截图...)< / p>