1

Railsアプリケーションでペーパークリップを使用して画像をアップロードしています。誰もが知っているように、デフォルトでペーパークリップが Rails パスに public ディレクトリを作成します。

しかし、capistrano を使用してアプリケーションをデプロイする際に問題が発生します。カピストラーノを使用してコードをデプロイするたびに、アップロード ディレクトリが置き換えられます。だから、私はsymlinkLinuxの専門家ではないので、ショートを作成するために実装しようとしています.それを続けることはできません.誰かがそれを解決する方法を手伝ってくれます.

has_attached_file :upload,styles: 
{ thumb: ["150x100#",:jpg], small: ["75x75#",:png]},
  default_url: '/assets/avatar.jpg', 
  url: "/post_images/post_:post_id/:style/:filename"

これが私のURLです。このディレクトリのシンボリックリンクを作成するにはどうすればよいですか/var/uploads/post_:post_id...

4

2 に答える 2

2

これを行う「正しい」方法は、ファイルを public/upload/.. ディレクトリに保存し、git からのアップロード フォルダを無視することです。次に、リリース カレント ディレクトリから共有ディレクトリへのシンボリック リンクを作成します (MOVE は最初にフォルダを共有ディレクトリにアップロードします)。これを に追加deploy.rb:

namespace :deploy do
  task :create_symlinks, :role => :app do
    run "ln -nfs #{shared_path}/uploads #{release_path}/public/uploads" #Create symlink for public files
    run "ln -nfs #{shared_path}/system #{release_path}/system" #Create symlink for private files
    run "ln -nfs #{shared_path}/config/database.yml #{release_path}/config/database.yml" #Create symlink for database
    run "ln -nfs #{shared_path}/.rvmrc #{release_path}/.rvmrc"  #Create symlink for rvm
  end
end

before "deploy:finalize_update", "deploy:create_symlinks"
于 2013-11-09T18:27:30.367 に答える
0

カピストラーノ3を使用。

  desc 'Persist Paperclip uploads'
  task :create_symlinks do
   on roles(:app) do
    execute "ln -nfs #{shared_path}/system #{release_path}/system" #Create symlink for private files
   end
  end

  after :published, "deploy:create_symlinks"
于 2014-08-08T03:24:40.413 に答える