访问rails中的静态符号目录

时间:2012-07-11 01:53:13

标签: ruby-on-rails static symlink

在rails 3.1中,我能够将符号链接放到我的公共文件夹中的html页面目录中,并且它可以正常工作。现在在rails 3.2中,当我尝试打开任何这些html文件时,它给了我一个404找不到的页面。 rails 3.2现在阻止了符号链接的变化,我该如何绕过它?

为了澄清,我有一位朋友希望通过将我的网站托管在我的网站上来节省资金。因此,当我部署他的网站时,应该可以http://mysite.org/hissite/访问。他在与我相同的服务器上拥有一个帐户,因此我只需创建一个指向其网站目录的符号链接。我把这个符号链接放在我的公共文件夹中。在升级到rails 3.2之前,这就像一个魅力。我可以使用硬目录,但这将在我的帐户上,要求他向我发送更新,然后我必须发布。这是一个很大的麻烦。对我来说,重要的是允许他在我的网站上托管他的内容,因为它是相关内容,并有助于吸引更多访问者访问我的网站。

更多细节: 问题出在我的生产现场使用乘客。在开发中,我在我的开发机器上使用符号链接目录对其进行了测试,它运行良好。硬链接似乎在生产中工作,但是每当他添加新文件时我都必须更新目录。

1 个答案:

答案 0 :(得分:0)

好吧,我想出了一个让它上班的黑客,但这不是我想要的。我写了一个capistrano任务来在我进行部署时链接文件。所以我的capistrano任务看起来像这样。

namespace :accounts do
    desc "Relink friend's site on each release"
    task :relink_friends_site, :roles => :app do
        run "mkdir -p #{release_path}/public/hissite"
        run "cd #{release_path}/public/hissite && ln /home/hisaccount/hissite/index.html"
        run "cd #{release_path}/public/hissite && ln /home/hisaccount/hissite/page2.html"
        ...
    end
end

如果有人知道更好的解决方法,请告诉我。至少这种方式我不必在部署之前重新链接文件。