Почему Heroku не использует хороший manifest.yml - PullRequest
1 голос
/ 28 марта 2012

Я использую Rails 3.2.2 на Heroku с CDN (CloudFront) для размещения ресурсов.

Я пробую учебник Heroku (https://devcenter.heroku.com/articles/cdn-asset-host-rails31) с активом asset_sync.

С активами проблем нет: прекомпиляция, все мои ресурсы размещены в моем S3-контейнере.

-->heroku run bundle exec rake assets:precompile                                                                                                                                                            
    Running bundle exec rake assets:precompile attached to terminal... up, run.1
    AssetSync: using default configuration from built-in initializer
    AssetSync: Syncing.
    Using: Manifest /app/public/assets/manifest.yml
    Uploading: assets/facebook_64-8cdc90984860efef829203e1e01aab10.png
    Uploading: assets/google_64-11634a6b4a219799449e7a7157f73387.png
    Uploading: assets/twitter_64-657ee379209d0bb998440421b499a6a2.png
    Uploading: assets/application-699d029330a2d095a9b59006a63a7b01.js
    Uploading: assets/application-2060c0efc074ae11265455479abfb6ff.css
    Uploading: assets/back_office-ccfdd79c9b296176087815c95607f540.css
    AssetSync: Done.

Проблема в том, что Heroku пытается получить доступ к плохим файлам CSS:

<code><link href="http://s3.amazonaws.com/annoncestest/assets/application-85cc4376a5de3b224db7c0548a44e7cb.css" media="all" rel="stylesheet" type="text/css" />

Как вы можете видеть, MD5 для приложения CSS не то же самое.

Однако нет проблем с файлами JS или другими ресурсами, которые не являются файлами CSS.

На моем ведре файл manifest.yml ссылается на хороший файл application-2060c0efc074ae11265455479abfb6ff.css но Heroku всегда пытается получить доступ к application-85cc4376a5de3b224db7c0548a44e7cb.css

Я попытался установить путь манифеста в моем production.rb с помощью:

config.assets.manifest = "http://myapp.cloudfront.net/assets" или же config.assets.manifest = "http://myapp.cloudfront.net/assets/manifest.yml"

Каждый раз, когда файлы CSS плохие.

Понятия не имею, в чем проблема. Есть идеи?

Ответы [ 2 ]

1 голос
/ 13 апреля 2012

Я решаю проблему благодаря поддержке heroku.

Во-первых, мое развертывание не прошло нормально, потому что у меня была известная проблема при использовании ресурсов rake: прекомпиляция

could not connect to server: Connection refused
Is the server running on host "127.0.0.1" and accepting
TCP/IP connections on port xxxx?

Чтобы предотвратить это, вам нужно установить initialize_on_precompile в false в вашем config / application.rb (не в вашем config / средах / production.rb):

config.assets.initialize_on_precompile = false

После этого при развертывании предварительная компиляция, похоже, работает, но существует проблема с asset_sync, который не находит переменные ENV (FOG_DIRECTORY и FOG_PROVIDER)

Чтобы решить эту проблему, вам нужно установить лабораторию героку с помощью этих двух команд:

heroku plugins:install https://github.com/heroku/heroku-labs.git
heroku labs:enable user_env_compile

И вы снова развернете геройку и (теоретически) она должна работать нормально! (у меня работает!)

Надеюсь, это поможет кому-нибудь в будущем!

0 голосов
/ 11 апреля 2012

Я не уверен, поможет ли это или нет, но я не проверяю файл manifest.yml ни в одном из моих проектов конвейера активов.Это связано с тем, что в пакете сборки Heroku будет выполняться предварительная компиляция ресурсов, которая генерирует новый манифест, который, как вы знаете, является правильным.

Я бы удалил его из Git и посмотрел, как все это работает (локальная компиляция ресурсовперед развертыванием это то, что вам не нужно делать при нажатии на Heroku)

...