【问题标题】:Why rails respond with public/assets/application.js but not app/assets/javascripts/application.js in development mode?为什么 Rails 在开发模式下响应 public/assets/application.js 而不是 app/assets/javascripts/application.js?
【发布时间】:2013-02-21 14:58:49
【问题描述】:

我在本地测试 turbo-sprockets gem 和预编译资产。从那时起,localhost:3000/assets/application.js 总是以public/assets/application.js 文件(而不是app/assets/javascripts/application.js)响应。

解决方案是删除public/assets 文件夹。这是正常行为吗?

【问题讨论】:

    标签: ruby-on-rails asset-pipeline assets sprockets


    【解决方案1】:

    当您使用生产环境编译资产时,生成的资产将放入public/assets。这是 Rails 将首先搜索资产的地方:如果您使用开发环境重新启动应用程序,资产已经存在,Rails 将不再在您的 app/assets 目录中搜索它们。

    documentation 中所述:“public 下的任何资产都将由应用程序或 Web 服务器作为静态文件提供。”

    你不应该在你的开发机器上预编译你的资产。

    【讨论】:

    • 不清楚如何避免我的情况。每次部署后都删除public/assetsconfig.assets.prefix 有帮助吗?
    • 你没有生产环境吗?在您的开发机器上,您希望每次更改某些内容时都能即时编译您的资产。在对面的生产机器上,您只想编译一次资产。
    • 我有一个,但我通常在使用 capistrano 部署期间在服务器上预编译资产。
    • 这是个好方法。您不应该在您的开发环境中预编译,而让服务器预编译您的资产以用于生产。如果由于某种原因您偶尔需要在开发中预编译资产,则必须删除 public/assets 目录。
    • Heroku docs 说我可以在本地预编译资产并将它们添加到 git repo。你不认为这是一个非常糟糕的解决方案吗?
    猜你喜欢
    • 1970-01-01
    • 2012-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-02
    • 1970-01-01
    • 2013-07-11
    • 2021-04-06
    相关资源
    最近更新 更多