Rails 4 assets.precompile

Это общий вопрос здесь, но ни одно из решений не устранило мою проблему, поэтому вот оно:

Я добавляю ace.js в свое приложение rails4. Так что я сделал

- Added vendor/assets/ace/ace.js
- Created vendor/assets/ace/index.js , with content
  //= require ace  
- Added the following to my production.rb
  config.assets.precompile += %w( index.js )  
  config.assets.paths << Rails.root.join("vendor", "assets", "ace")

Итак, в моем файле макета я:

<%= javascript_include_tag "ace" %>

и он отлично работает на dev, но когда я запускаю:

RAILS_ENV=production bundle exec rake assets:precompile

Он не создает дайджест-версию файла туза.

Я что-то упустил?

Ответы

Ответ 1

Решается путем добавления:

config.assets.precompile += %w( index.js )

до config/application.rb. (не config/environments/production.rb)

Протестировано в Rails 4.0 beta1.

Ответ 2

Если вы добавляете каталог ace в качестве активов, вы должны поместить файлы js в каталог vendor/assets/ace/javascripts (который вы должны создать).

Обычно вам не нужно config.assets.precompile += %w( index.js ), Sprockets справится с этим просто отлично. Если в каталог vendors/assets/ace есть только один файл js, вам не нужен index.js. index.js будет правильным, если у вас много подкаталогов и файлов под vendor/assets/ace/javascripts/your_vendor_js_library. Последнее: вам не нужно <%= javascript_include_tag "ace" %>, он дублирует содержимое <%= javascript_include_tag "application" %>.