【发布时间】:2012-12-14 04:27:50
【问题描述】:
我正在尝试将公用文件夹符号链接到我的 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”,这样:~/public_html/public。
如果我直接在服务器上(通过 SSH)在任务中执行完全相同的步骤,它会完美运行。我不明白我做错了什么。
【问题讨论】:
-
你确定,通过 ssh 的相同命令会产生你所期望的吗?
-
是的。我已将命令逐个字母复制到终端并确认它有效。
-
在这种情况下,没有理由拒绝在您的 `deploy.rb' 中使用相同的命令。
-
这就是它如此令人沮丧的原因。可以肯定的是,我再次运行 cap
deploy:link_release_to_public。我复制了任务运行时列出的命令,并通过 SSH 将它们粘贴到终端中。它在服务器上工作,不能与 capistrano 一起工作。 -
在这种情况下,您必须保持冷静和耐心。把大问题分解成小块,迈出小步。例如:尝试删除
deploy.rb中的几个命令,例如run cd ~和rm -rf ...。
标签: ruby-on-rails command-line capistrano