0

サーバー上の public_html フォルダーへの Rails アプリケーションへのパブリック フォルダーをシンボリック リンクしようとしていますが、正しく取得できないようです。

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経由で)タスクとまったく同じ手順を実行すると、完全に機能します。私が間違っていることを理解していません。

4

2 に答える 2

1

これを試して :

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

の末尾のスラッシュに注意してください...current/public/。これは、ディレクトリへのシンボリック リンクを作成するようにコマンドに指示lnします。新しいディレクトリを作成してシンボリック リンクを作成するのではありません。

于 2012-12-29T01:12:55.480 に答える
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 として配置することで期待どおりに機能しました。

于 2012-12-29T03:05:24.313 に答える