【问题标题】:rails 4 asset pipeline vendor assets images are not being precompiledrails 4 资产管道供应商资产图像未预编译
【发布时间】:2012-12-21 02:40:43
【问题描述】:

我的应用程序和fancybox2-rails gem 使用rails 4 和ruby 1.9.3,但是资产管道存在一般问题。如果我运行rake task 进行预编译,那么除了vendor/assets/images../gems/ruby-1.9.3-p327/gems/fancybox2-rails-0.2.1/vendor/assets/images 中的图像外,一切都很好。这两个文件夹中的图像没有被预编译,最终我遇到了指向不存在图像的死链接的问题。有什么建议吗?

【问题讨论】:

    标签: asset-pipeline ruby-on-rails-4


    【解决方案1】:

    听起来 Sporker 无法从供应商/资产/图像中自动加载图像。

    2.2 资产组织 管道资产可以放置在三个位置之一的应用程序中:app/assets、lib/assets 或 vendor/assets。

    app/assets 用于应用程序拥有的资产,例如自定义图像、JavaScript 文件或样式表。

    lib/assets 用于您自己的库的代码,这些代码并不真正适合应用程序的范围或跨应用程序共享的那些库。

    vendor/assets 用于外部实体拥有的资产,例如 JavaScript 插件和 CSS 框架的代码

    guides.rubyonrails.org的描述来看,我认为他们不会无意识地忽略供应商/资产/图像。

    所以我只是添加了以下行:

    #config/application.rb
    config.assets.paths << Rails.root.join("vendor", "assets", "images")
    

    而且,我解决了我的问题。 我希望这对你有用。

    【讨论】:

      【解决方案2】:

      对于我的 Rails 4.2.x 项目,我只是将供应商图像移至 vendor/assets/images 并将其添加到 application.rb

      config.assets.precompile += %w(vendor/assets/images/*)
      

      在开发和生产方面工作良好。

      【讨论】:

      • 这适用于我的 Rails 5 应用程序,所以现在 image_tag('image.png') 正在返回正确的图像
      【解决方案3】:

      似乎默认情况下仅包含来自 app/assets 文件夹的图像。所以解决办法就是在config/application.rb中加入这一行

      config.assets.precompile += %w(*.png *.jpg *.jpeg *.gif)
      

      【讨论】:

      • 这对我有用,但这个设置应该进入 config/environments/production.rb 文件。但是,这目前在 rails 4.0.0.beta1 中被破坏(请参阅 github.com/rails/rails/issues/9572github.com/rails/sprockets-rails/pull/36
      • 我最初有 2 张图片无法加载,fancybox_loading.gif 和 fancybox_overlay.png,这个固定的 overlay.png 但 loading.gif 仍然不起作用。
      • 把它放在 production.rb 中,但它在部署时没有帮助。编译的资产中不存在花式框图像。
      • 这没有供应商/资产链接?它似乎对我不起作用。
      • 我认为供应商目录现在已从预编译过程中排除?
      猜你喜欢
      • 2013-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-08
      • 1970-01-01
      • 1970-01-01
      • 2012-10-01
      • 1970-01-01
      相关资源
      最近更新 更多