【问题标题】:rake assets:precompile showing up locally instead of in S3rake assets:precompile 在本地而不是在 S3 中显示
【发布时间】:2014-10-09 11:24:30
【问题描述】:

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

我在这里做错了什么?

【问题讨论】:

  • 除非你使用像asset_sync这样的东西,否则复制到s3的事情不会自动发生
  • 对不起@FrederickCheung 我正在使用asset_sync

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


【解决方案1】:

您必须感谢asset_sync 可以同步您的资产(而不是替换它们)


资产同步

gem 本身将让 Rails 将您的资产“本地”发布(到 /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 

应该使您能够在本地(开发中)使用预编译的资产,这反过来又允许您使用 S3

默认情况下,生产服务提供静态资产,这意味着测试asset_sync 的最适用方式实际上是部署到您的生产环境。但是,您应该也可以使用上面的代码使其在开发中工作

【讨论】:

  • 谢谢里奇。这行得通 - 我的开发资产现在通过 S3 提供服务。非常感谢!
猜你喜欢
  • 1970-01-01
  • 2013-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-23
  • 2020-12-20
  • 1970-01-01
相关资源
最近更新 更多