符号链接链接文件夹

时间:2012-12-29 00:15:24

标签: ruby-on-rails command-line capistrano

我正在尝试将公共文件夹符号链接到我的rails应用程序到我服务器上的public_html文件夹,我似乎无法正确使用它。

我的deploy.rb文件中有一个名为:link_release_to_public的任务:

namespace :deploy do 
  task :link_release_to_public do
    run "cd ~"
    run "rm -rf ~/public_html"
    run "ln -sf ~/#{current_path}/public ~/public_html"
  end
end

在其中,我删除现有的“public_html”文件夹,然后使用以下命令创建符号链接:

ln -sf ~/rails_app/releases/current/public ~/public_html

目标是用符号链接替换〜/ public_html到当前版本的公共文件夹。

运行cap deploy:link_release_to_public成功完成,但是,不是将文件直接链接到〜/ public_html文件夹,而是创建“public_html”文件夹,然后在〜/ public_html中符号链接“public”,以便:{{ 1}}。

如果我直接在服务器上执行完全相同的步骤(通过SSH),它就能完美运行。我不明白我做错了什么。

2 个答案:

答案 0 :(得分:1)

试试这个:

ln -sf ~/rails_app/releases/current/public/ ~/public_html

注意...current/public/末尾的斜杠。它指示ln命令对目录进行符号链接,而不是创建新的符号链接并对其进行符号链接。

答案 1 :(得分:1)

问题在于如何将命令放入任务中。我更改了任务,以便同时发出remove和symlink命令,而不是单独发出:

namespace :deploy do 
  task :link_release_to_public do
    run "cd ~"
    run "rm -rf ~/public_html && ln -sf ~/#{current_path}/public ~/public_html"
  end
end

我运行了命令,它通过将符号链接设置为〜/ public_html按预期工作。