【问题标题】:Rails generates wrong asset urlsRails 生成错误的资产 url
【发布时间】:2014-06-20 11:26:50
【问题描述】:

rails 初学者在这里

我正在尝试将应用设置为生产,但资产管道存在很大问题。正在开发中,每个资产都在/assets/blabla.extension下生成

但是,我正在运行 nginx,并且在运行 rake assets:precompile 时,它​​会按照应有的方式在 /public/assets 下创建资产。但是当我访问我的应用程序时,它会生成像 /application.css 这样的 URL,而不是像它应该生成的 /assets/application-digestq12343.css

我认为这个问题有一个简单的解决方法.. 但我找不到它。请帮帮我!

更新: 从文档中我读到 Sprockets “默认”是 /assets 但它肯定不在我的应用程序中。我使用最新版本的rails。文档可以过时吗? http://edgeguides.rubyonrails.org/asset_pipeline.html

即使我将config.assets.prefix = "/assets" 添加到我的作品中,这仍然意味着我不会加载资产,因为摘要会丢失。

【问题讨论】:

  • 您是使用 rails s 还是使用外部 Web 服务器运行生产环境?
  • 外部 我使用 nginx,我做了一些更改并使用 rake 任务来构建资产,突然它就可以正常工作并且 url 改变了。奇怪,我不确定是什么解决了它。 :p
  • 资产重新编译后,您似乎必须重新启动 Rails 服务器。生产环境,你知道的,它应该在任何小事后重新启动:) 如果我在没有编译资产的情况下运行生产服务器,重新编译资产,刷新网页而不重新启动服务器,我可以重现你的情况。
  • 是的,大概就是这样。我首先运行 rake assets:precompile 但这不起作用,我不得不运行 bunle exec rake assets:precompile RAILS_ENV=production。但是感谢您的帮助:)

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


【解决方案1】:

我相信这与我遇到的问题相同。不要在你的css(或scss)中使用url(),而是使用asset-data-url()并将config.assets.enabled = true添加到你的应用程序配置文件中。然后,rake assets:precompile 在你推送之前。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-15
    • 2016-10-14
    • 1970-01-01
    • 1970-01-01
    • 2014-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多