2

我决定通过 S3 为 Rails 资产提供服务;heroku 有关于如何做到这一点的很棒的教程。该站点现在正在从我的亚马逊存储桶中提供资产,但我不确定为什么我必须heroku run rake assets:precompilegit push heroku master运行rake assets:precompile.

在运行git push heroku master不在我的存储桶中的资产之后,预编译内容的输出是:

AssetSync: using default configuration from built-in initializer
       AssetSync: using default configuration from built-in initializer
       rake aborted!
       Fog provider can't be blank, Fog directory can't be blank
       /tmp/build_3vtwfg15g8ajx/vendor/bundle/ruby/1.9.1/gems/asset_sync-0.5.0/lib/asset_sync/asset_sync.rb:29:in `sync'
       /tmp/build_3vtwfg15g8ajx/vendor/bundle/ruby/1.9.1/gems/asset_sync-0.5.0/lib/tasks/asset_sync.rake:3:in `block in <top (required)>'
       Tasks: TOP => assets:precompile:nondigest
       (See full trace by running task with --trace)
       Precompiling assets failed, enabling runtime asset compilation
       Injecting rails31_enable_runtime_asset_compilation

我确实设置了雾提供程序和目录:heroku config:add FOG_DIRECTORY=XXX FOD_PROVIDER=AWS并调用 heroku config --app 确认了这一点......所以我没有收到这些错误。

资产没有出现在我的存储桶中,所以我跑了:heroku run rake assets:precompile一切正常,并发出警告:

AssetSync: using default configuration from built-in initializer
AssetSync: Syncing.
[WARNING] fog: the specified s3 bucket name(ss_assets) is not a valid dns name, which will negatively impact performance.  For details see: http://docs.amazonwebservices.com/AmazonS3/latest/dev/Bucket
Restrictions.html

我是否总是必须在推送失败之后运行预编译任务并且可以接受?我将检查目录名称的警告是否导致推送时出现空白 FOG 错误

再次编辑 asset_sync在heroku推送的assets:precompile任务中调用时似乎没有ENV变量。推送后运行该任务但它“烦人”。

仍然不适合我,最近的尝试是(每个asset_sync github项目):

lib/tasks/asset_sync.rake。

Rake::Task['assets:precompile'].enhance do
  AssetSync.sync
end

Rake::Task["assets:precompile:nondigest"].enhance do
  AssetSync.sync
end

我还尝试在我的 production.rb 文件中添加行,例如:

  config.asset_sync.aws_bucket = ENV['FOG_DIRECTORY']
  config.asset_sync.fog_provider = ENV['FOG_PROVIDER']

也没有为我工作。

4

1 回答 1

10

asset_sync docs Labs部分运行在下面

heroku labs:enable user-env-compile -a myapp

尚未将其作为标准进入平台!

于 2012-12-08T01:01:39.493 回答