0

Rails 4.2、Ruby 2.2 を使用しています

次を使用して新しいアプリを生成しました: rails new app --skip-sprockets

すべての Gulp タスクが正常に実行されています (それらの多く: gulp-changed および gulp-livereload から gulp-minify-css、gulp-uncss などまで)。

gulp-rev-all を使用すると、MD5 指紋命名規則ですべてのアセットを生成できます。

それらは rev-manifest.json に適切に保存されます

app/assets/rev-manifest.json:

{
  "rev-manifest.json": "rev-manifest.9680cee8.json",
  "images/measurement.png": "images/measurement.cedb4145.png",
  "images/measurement2.png": "images/measurement2.cedb4145.png",
  "scripts/chachin.js": "scripts/chachin.5f30b461.js",
  "stylesheets/chachin.scss": "stylesheets/chachin.4c7c499d.scss"
}

アプリ/ヘルパー/application_helper.rb

module ApplicationHelper

  def stylesheet_link_tag(url, options={})
    url = AssetManifest.stylesheet_path(url)

    super(url, options)
  end

  def crossorigin_javascript_include_tag(url, options={})
    url = AssetManifest.javascript_path(url)

    super(url, options)
  end

  def image_tag(url, options={})
    url = AssetManifest.asset_path(url)

    super(url, options)
  end

  def image_path(url, options={})
    url = AssetManifest.asset_path(url)

    super(url, options)
  end

  def image_url(url, options={})
    url = AssetManifest.asset_path(url)

    super((ActionController::Base.asset_host || "") + url, options)
  end

end

config/initializers/asset_manifest.rb

class AssetManifest

  def self.manifest
    if File.exists?("app/assets/rev-manifest.json")
      @manifest ||= JSON.parse(File.read("app/assets/rev-manifest.json"))
    end
  end

  def self.stylesheet_path(url)
    if AssetManifest.manifest
      url += ".css" unless url.end_with?(".css")
      AssetManifest.manifest[url] || url
    else
      url
    end
  end

  def self.javascript_path(url)
    if AssetManifest.manifest
      url += ".js" unless url.end_with?(".js")
      AssetManifest.manifest[url] || url
    else
      url
    end
  end

  def self.asset_path(url)
    if AssetManifest.manifest
      AssetManifest.manifest[url] || url
    else
      url
    end
  end
end

何か不足していますか?

4

1 に答える 1