Подтвердить что ты не робот

Manifest.yml не обновляется с помощью активов: precompile - Rails 3.2.6

Я пытаюсь убедиться, что я обслуживаю сжатые файлы css и js, используя конвейер Rails. Я все хорошо подобрал, и все радостно прекомпилирует, а также успешно синхронизируется с S3, где я обслуживаю их, используя Amazon CloudFront CDN.

Я обслуживаю application.css и application.js следующим образом:

= stylesheet_link_tag "application"
= javascript_include_tag "application"

Проблема в двух словах: Файлы с суффиксом MD5 не выводятся в макете приложения - только raw.css и application.js

Это немного странно: все изображения имеют штамп MD5. Файлы CSS/JS не работают.

Здесь мой production.config:

 config.action_controller.perform_caching = true

  # Specifies the header that your server uses for sending files
  config.action_dispatch.x_sendfile_header = "X-Sendfile"
  config.assets.compress = true
  # Fallback to compile on demand
  # config.assets.compile = true
  #config.assets.precompile += %w(application.css application.js)
  # Generate digests for assets URLs
  config.assets.digest = true
  #push the assets to amazon
  config.action_controller.asset_host = Proc.new { |source, request|
    if request.ssl?
      "https://tekpub-assets.s3.amazonaws.com"
    else
      "http://tekpub-assets.s3.amazonaws.com"
    end
  } 

  config.serve_static_assets = false

Беспощадная вещь во всем этом процессе заключается в том, что я могу видеть gzipped/digested files - они находятся прямо в моем каталоге ресурсов. Все em - файлы CSS и JS.

Однако мой файл manifest.yml обновляется только так:

---
application.js: application.js
application.css: application.css

Нет ошибок при запуске precompile - на самом деле все выглядит довольно peachy:

** Invoke assets:precompile:all (first_time)
** Execute assets:precompile:all
** Invoke assets:precompile:primary (first_time)
** Invoke assets:environment (first_time)
** Execute assets:environment
** Invoke environment (first_time)
** Execute environment
Resolved collector.newrelic.com to 204.93.223.153
AssetSync: using /Volumes/Fatty/Sites/tpub6/config/initializers/asset_sync.rb
** Invoke tmp:cache:clear (first_time)
** Execute tmp:cache:clear
** Execute assets:precompile:primary
** Invoke assets:precompile:nondigest (first_time)
** Invoke assets:environment (first_time)
** Execute assets:environment
** Invoke environment (first_time)
** Execute environment
Resolved collector.newrelic.com to 204.93.223.153
AssetSync: using /Volumes/Fatty/Sites/tpub6/config/initializers/asset_sync.rb
** Invoke tmp:cache:clear (first_time)
** Execute tmp:cache:clear
** Execute assets:precompile:nondigest
AssetSync: Syncing.
Using: Directory Search of /Volumes/Fatty/Sites/tpub6/public/assets
AssetSync: Done.

Спасибо за любые указатели/подсказки/советы.

4b9b3361

Ответ 1

ОК, я нашел ответ: если конвейер активов не может скомпилировать файл (или тип файла), он будет терпеть неудачу в стиле Ruby/Rails.

В моем случае было 2 проблемы: был "." в имени js файла (bootstrap.min.js) - ему это не понравилось, что, я полагаю, имеет смысл, так как оно использует имена файлов, чтобы выяснить, как обрабатывать файл (например, file.css.erb).

Следующий тип файла, который не знает, что делать. Из-за некоторой слепоты и глупости при перемещении файлов, у меня был заблудившийся файл YAML в каталоге моих ресурсов/изображений. Это забило процессор, делающий активы: precompile fail... снова... молча.

Как я понял, это создать пустой проект Rails и скомпилировать активы с нуля. Это как я нашел проблему JS файла, так и немой файл YAML.