【问题标题】:Rails 3 & assets pipeline in development/production mode开发/生产模式下的 Rails 3 和资产管道
【发布时间】:2012-02-18 12:47:45
【问题描述】:

在生产服务器上预编译资产非常慢。所以我决定在开发机器上重新编译它们并通过jammit将资产上传到Amazon S3。一切都完成了,但我有一些负面的问题:

  1. 我必须将public/assets 目录包含到git 控件中。因为如果生产服务器上的public/assets 目录为空会失败
  2. 如果我在开发机器上预编译资产application.js 以压缩形式包含在 HTML 中,这样我就复制了 js 代码。更改 js 没有任何效果,因为预编译的 application.js 会中断这段代码。

这样我的开发过程包括以下步骤:

  1. 如果我要更改 js 或 css,请删除预编译资产
  2. 做一些改变
  3. 预编译资产
  4. jammit-s3 将资产上传到 S3
  5. 提交我的更改并将包括资产在内的更改推送到 git 服务器
  6. 由 capistrano 部署

我的问题是:

  1. 如果我在public/assets目录中有压缩的application.js,是否可以配置开发环境不包含压缩?
  2. 是否可以将生产环境配置为使用空的public/assets 目录?资产只会在 S3 服务器上。

【问题讨论】:

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


    【解决方案1】:

    对于第一个问题,我不知道除了运行之外的永久解决方案:

    bundle exec rake assets:clean
    

    在您切换回开发模式之前。我很想看看您是否可以在不关闭整个资产管道的情况下忽略开发中的资产。

    在 production.rb 中,您的第二个问题有一个选项:

    # Enable serving of images, stylesheets, and JavaScripts from an asset server
    config.action_controller.asset_host = "http://assets.example.com"
    

    然后它应该忽略您的资产目录,因为它依赖于远程主机。 希望对您有所帮助。

    【讨论】:

    • 如果是生产模式,我已经设置了config.action_controller.asset_host,但无论如何我都必须在public/assets 路径中有预编译的资产,因为没有它们服务器就会失败
    • 您可能还想尝试一些不同的设置。你能发布你的production.rb吗,因为很难说你做了什么,没有做什么。尽量减少 Rails 对资产的使用,例如:config.assets.compile = false 这样它就不会尝试生成它们。
    • 还有,服务器故障是怎么回事?它不注册远程asset_host 并检查public/assets 目录?那么它实际上是从应用程序还是asset_host 为他们提供服务?
    • 我关闭了config.assets.compile,但没有任何效果。我的资产目录为空服务器失败并出现异常消息:Can't find application.css。但如果资产目录不为空,所有资产都来自asset_host,即 s3
    • 我讨厌这样,如果可行的话,你不能把一些资产放在那里,因为那会破坏你可能试图实现的干净结构。我做了一些研究,但找不到任何其他可能导致您遇到问题的东西。将 Rails 更新到最新版本并尝试使用新的(测试)应用程序设置快速测试。如果这导致同样的事情发生,你可能偶然发现了一个错误,你应该在 github repo 的问题下报告它。祝你好运!
    【解决方案2】:

    我通过在 gitignore 中包含资产目录并仅排除一个文件来解决此问题 - public/assets/manifest.yml 和生产服务器现在可以正常工作,即 config.action_controller.asset_host = "http://assets.example.com" 可以正常工作。它只需要manifest.yml 文件

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-16
      • 1970-01-01
      • 1970-01-01
      • 2012-02-04
      • 1970-01-01
      相关资源
      最近更新 更多