rails assets: precompile durante slug para erro s3: Provedor de névoa e diretório não podem ficar em branco quando env são definidos
Eu decidi servir ativos de trilhos via S3; O heroku tem ótimos tutoriais sobre como fazer isso. O site agora está atendendo recursos do meu bucket do Amazon, mas não tenho certeza de por que tive que executar manualmenteheroku run rake assets:precompile
após umgit push heroku master
que executa umrake assets:precompile
.
Depois de executar ogit push heroku master
os ativos onde não estavam no meu bucket e a saída para o material de pré-compilação era:
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
Eu configurei o provedor de névoa e o diretório com:heroku config:add FOG_DIRECTORY=XXX FOD_PROVIDER=AWS
e chamando o heroku config --app confirma isso ... então eu não entendo esses erros.
Os recursos não apareceram no meu balde, então eu corri:heroku run rake assets:precompile
e tudo funcionou com um aviso:
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
Eu sempre terei que executar a tarefa de pré-compilação e ficar bem com a falha de envio? Verificarei se o aviso do nome do diretório está causando os erros FOG em branco ao pressionar
EDITAR Novamente asset_sync não parece ter variáveis ENV quando chamado na tarefa assets: precompile do push heroku. Executar essa tarefa após o envio funciona, mas é "irritante".
Ainda não está funcionando para mim, a última tentativa foi (porprojeto github asset_sync):
lib / tasks / asset_sync.rake.
Rake::Task['assets:precompile'].enhance do
AssetSync.sync
end
Rake::Task["assets:precompile:nondigest"].enhance do
AssetSync.sync
end
Eu também tentei adicionar linhas ao meu arquivo production.rb, como:
config.asset_sync.aws_bucket = ENV['FOG_DIRECTORY']
config.asset_sync.fog_provider = ENV['FOG_PROVIDER']
Não funcionou para mim também.