rake资产:在本地而不是在S3中显示的预编译

时间:2014-08-15 17:33:22

标签: ruby-on-rails ruby amazon-s3 asset-pipeline

rake assets:precompile目前在我的public/assets目录中将所有内容都吐入我的印象(在设置S3之后),它会推送到亚马逊。我正在使用asset_sync概述here

目前我在application.rb

中有这个
class Application < Rails::Application
  config.assets.enabled = true
  config.assets.digest = true
end

然后在development.rb我有:

  config.action_controller.asset_host =  "//#{ENV['FOG_DIRECTORY_DEV']}.s3.amazonaws.com"
  config.action_mailer.asset_host = "http://#{ENV['FOG_DIRECTORY_DEV']}.s3.amazonaws.com"
  config.assets.initialize_on_precompile = false

我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

您必须感谢asset_sync 同步您的资产(而非替换它们)


资产同步

宝石本身将让Rails在本地发布您的资产&#34; (到/public/assets),然后它将基本上将它们全部推送到您的S3存储桶,复制它们。

gem's documentation

所述
  

在Rails和S3之间同步资产。

     

Asset Sync可以使用新的Rails Asset Pipeline功能运行   在Rails 3.1中引入。运行bundle exec rake之后   资产:预编译您的资产将同步到您的S3存储桶,   可选择删除未使用的文件,只上传所需的文件   到。

-

<强>修正

关于您的问题,我确定默认情况下,动态动态提供开发资产 - 这意味着如果您想将它们作为 static 运行(预编译),你必须tweak some of the settings定义这个:

  #config/environments/development.rb
    # Debug mode disables concatenation and preprocessing of assets.
    # This option may cause significant delays in view rendering with a large
    # number of complex assets.
    config.assets.debug = false #true 

默认情况下,生产服务于静态资产,这意味着最适用的测试方法asset_sync实际上是通过部署到生产环境来实现的。但是,您应该能够使用上面的代码使其在开发中工作