2013-11-22 35 views
20

にしてください申し訳ありませんが、これは簡単な質問に長い時間がかかりましたが、私の考えを明確にしたいと思っていました。Rails静的アセットを公開/アプリ/アセット/

私は今いくつかのプロジェクトでRails 4を使用していますが、image_tag('/assets/image.png')を使用して、アセットパスヘルパーがRails 4でどのように動作するかについての変更を回避しています。変更点については、そして、this first change note in sprockets-railsを見出した。また、Railsヘルパーの/actionview/lib/action_view/helpers/asset_url_helper.rb#L170のASSET_PUBLIC_DIRECTORIESはパブリックフォルダを指しているだけであることにも気付きました。静的ファイルにアクセスしている場合、Railsはパブリックフォルダを使用することを望んでいます。

だから今、私はこれを考え出したことを、私はちょうどは明らかにこの状態なぜエッジレールドキュメントを理解することはできません:Railsの以前のバージョンでは

を、すべての資産がのサブディレクトリに位置していました画像、JavaScript、スタイルシートなどの一般公開されています。アセットパイプラインでは、これらのアセットの優先される場所がapp/assetsディレクトリになりました。

image_pathは実際には全く反対のpublic/imagesフォルダへのURIを生成します。

そして、このすべてをまとめてみると、asset_syncでS3に資産をデプロイするため、利用可能なすべてのヘルパーとダイジェストビルダーを使用する必要があります。

私の質問はちょうどいいです。 画像/非コンパイルアセットを入れ、asset_pathヘルパーを使用する場所がありますか?すべてのドキュメントや他のすべてのスタックオーバーフローの会話は、app/assetsフォルダを使用している人に関するものですが、sprockets-railsは、非ダイジェストアセットにpublicを使用したいと考えています。更新が必要なウェブ上のドキュメントや情報はありますか、/ assets /ですべてのアセットパスを先読みしているだけなのですか?

更新:私は実際に開発サーバーを再起動していなかった問題を抱えていたと思います。アプリケーション/アセット/イメージの画像が公開されないようになっていました。また、私はpaperclip default_urlでアセットヘルパーを使用していたことにも注意してください(これは、見つかったスタックオーバーフローのいくつかの回答でアセットをポイントする方法として参照されています。 uninterpolated資産名は明らかに既存のファイルとして検出されません。

+0

グーグルでこれを見つけた人のために、アセットについては、Railsガイドhttp://guides.rubyonrails.org/asset_pipeline.htmlで説明しています。 –

答えて

30

あなたがrake assets:precompileを使用する場合、Railsはpublic/assetsに、あなたのapp/assetsフォルダからの資産のすべてを移動します。これは、通常のブラウザはあなたへのアクセス権を持っていないようですappディレクトリにアクセスできますが、publicにアクセスできます。

あなたの質問にお答えするために、私の考えはここにあります。たとえば、ロゴや背景などのサイトレイアウトの場合は、app/assets/imagesディレクトリに保存する必要があります。ただし、画像がユーザーによって生成された場合は、public/imagesなどに直接保存する必要があります。理想的にはそれらをS3またはCDNに保存しますが、すでにそれを行っています。ボーナスとして

あなたはそれらの設定ファイルで見ることができるよう、Carrierwave、Railsの画像アップロード宝石は、その画像のデフォルトストアとしてpublic/images型パスを使用しています。

# Override the directory where uploaded files will be stored. 
    # This is a sensible default for uploaders that are meant to be mounted: 
    def store_dir 
    "images/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" 
    end 

は、この情報がお役に立てば幸い!

関連する問題