1

Rails 3.1 では、パブリック フォルダーにある html ページのディレクトリへのシンボリック リンクを配置でき、機能しました。Rails 3.2 では、これらの html ファイルを開こうとすると、404 not found ページが表示されます。シンボリックリンクをブロックするようになったRails 3.2の変更点と、それを回避するにはどうすればよいですか?

明確にするために、私には自分のサイトを私のものから外してホストすることでお金を節約したい友人がいます。したがって、私がデプロイすると、彼のサイトはhttp://mysite.org/hissite/でアクセスできるはずです。彼は私と同じサーバーにアカウントを持っているので、彼のアカウントにあるディレクトリ hissite へのシンボリック リンクを作成するだけです。このシンボリック リンクをパブリック フォルダーに配置します。Rails 3.2 にアップグレードする前は、これは魅力的に機能していました。ハードディレクトリを使用できますが、これは私のアカウントにあり、更新を送信する必要があり、それを投稿する必要があります. これは大変な手間です。彼が自分のコンテンツを私のサイトでホストできるようにすることは、関連するコンテンツであり、より多くの訪問者を私のサイトに呼び込むのに役立つため、私にとって重要です.

詳細: 問題は、パッセンジャーを使用している本番サイトにあります。開発中、開発マシンのシンボリック リンク ディレクトリでテストしたところ、問題なく動作しました。ハードリンクは本番環境では機能しているようですが、新しいファイルを追加するたびにディレクトリを更新する必要があり、面倒です。

4

1 に答える 1

0

まあ、それを機能させるためのハックを見つけましたが、それは私が望むものではありません。展開を行うたびにファイルをリンクする 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

誰かがこれを修正するより良い方法を知っているなら、私に知らせてください。少なくともこの方法では、展開ごとに自分でファイルを再リンクする必要はありません。

于 2012-08-11T23:33:20.960 に答える