2

cap deploy:migrations管理フォームからアップロードした画像 (アバター画像を使用した証言の作成など) を使用して Rails アプリを本番環境に再デプロイした後、画像のリンクが壊れていることに気付きました。コードの変更を頻繁にプッシュするため、コードを再デプロイしない限り、画像は問題なく表示されます。これは、カピストラーノが展開ごとに「リリース」でファイル構造を作成する方法に関連していると思いますが、この問題を修正する方法がわかりません。

public/uploadsまた、ローカルホストで使用する偽のコンテンツを本番環境に表示したくないため、git で追跡していません。

したがって、最新のコードをプッシュする前に、追加したばかりのすべての画像がそこにありました。今、プッシュ後、画像はありません:

壊れた画像リンク

関連があると思われるファイルは次のとおりです (これら以外にも確認する必要があるファイルがある場合はお知らせください)。

avatar_uploader.rb:

class AvatarUploader < CarrierWave::Uploader::Base
  include CarrierWave::RMagick
  storage :file

  def store_dir
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end

  process :resize_to_fit => [200, 200]

  def extension_white_list
    %w(jpg jpeg gif png)
  end
end
4

2 に答える 2

4

デフォルトでは、Capistrano はpublic/systemディレクトリをリンクします。画像を永続化するには、変更するだけです

def store_dir
  "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end

def store_dir
  "system/uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
于 2015-05-28T16:22:24.627 に答える
0

linked_dirsdeploy.rb で変数を設定していないか( Capistrano 3public/uploadsの場合)、 fromへの sym-link を指定していないようですshared/public/uploads(Capistrano 2 の場合)。

それがなければ、すべてのデプロイはディレクトリを「上書き」しますpublic/uploads

詳細はこちら

于 2015-05-28T16:14:36.293 に答える