Rails 3&资产管道处于开发/生产模式

时间:2012-02-18 12:47:46

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

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

  1. 我必须将public/assets目录包含在git控件中。因为生产服务器上的public/assets目录为空时失败
  2. 如果我在开发机器上预编译资源application.js包含在压缩的HTML中,那么我就有重复的js代码。更改js不会产生任何影响,因为预编译的application.js会中断此代码。
  3. 这样我的开发过程包括以下步骤:

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

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

2 个答案:

答案 0 :(得分:2)

对于问题一,我不知道除了跑步之外的永久性解决方案:

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"

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

答案 1 :(得分:1)

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