Проблема с предварительной компиляцией ресурсов в приложении Rails

Мое приложение rails использует Rails 3.2.15. Когда я пытаюсь развернуться на Heroku, я получаю сообщение об ошибке:

Asset logical path has no extension: ]

В других примерах ошибки «установить логический путь», которые я видел, элемент после двоеточия был именем файла. Почему он думает, что существует файл с именем «]»?

Вот полная ошибка:

 /tmp/build_4d16c741-7af1-443a-b0f0-8aad5d279d8f/vendor/bundle/ruby/1.9.1/gems/sprockets-2.2.2.backport2/lib/sprockets/asset.rb:36:in `initialize'
       /tmp/build_4d16c741-7af1-443a-b0f0-8aad5d279d8f/vendor/bundle/ruby/1.9.1/gems/sprockets-2.2.2.backport2/lib/sprockets/base.rb:380:in `new'
       /tmp/build_4d16c741-7af1-443a-b0f0-8aad5d279d8f/vendor/bundle/ruby/1.9.1/gems/sprockets-2.2.2.backport2/lib/sprockets/base.rb:380:in `build_asset'
       /tmp/build_4d16c741-7af1-443a-b0f0-8aad5d279d8f/vendor/bundle/ruby/1.9.1/gems/sprockets-2.2.2.backport2/lib/sprockets/index.rb:94:in `block in build_asset'
       /tmp/build_4d16c741-7af1-443a-b0f0-8aad5d279d8f/vendor/bundle/ruby/1.9.1/gems/sprockets-2.2.2.backport2/lib/sprockets/caching.rb:58:in `cache_asset'
       /tmp/build_4d16c741-7af1-443a-b0f0-8aad5d279d8f/vendor/bundle/ruby/1.9.1/gems/sprockets-2.2.2.backport2/lib/sprockets/index.rb:93:in `build_asset'
       /tmp/build_4d16c741-7af1-443a-b0f0-8aad5d279d8f/vendor/bundle/ruby/1.9.1/gems/sprockets-2.2.2.backport2/lib/sprockets/base.rb:287:in `find_asset'
       /tmp/build_4d16c741-7af1-443a-b0f0-8aad5d279d8f/vendor/bundle/ruby/1.9.1/gems/sprockets-2.2.2.backport2/lib/sprockets/index.rb:61:in `find_asset'
       /tmp/build_4d16c741-7af1-443a-b0f0-8aad5d279d8f/vendor/bundle/ruby/1.9.1/gems/sprockets-2.2.2.backport2/lib/sprockets/manifest.rb:211:in `block in find_asset'
       /tmp/build_4d16c741-7af1-443a-b0f0-8aad5d279d8f/vendor/bundle/ruby/1.9.1/gems/sprockets-2.2.2.backport2/lib/sprockets/manifest.rb:257:in `benchmark'
       /tmp/build_4d16c741-7af1-443a-b0f0-8aad5d279d8f/vendor/bundle/ruby/1.9.1/gems/sprockets-2.2.2.backport2/lib/sprockets/manifest.rb:210:in `find_asset'
       /tmp/build_4d16c741-7af1-443a-b0f0-8aad5d279d8f/vendor/bundle/ruby/1.9.1/gems/sprockets-2.2.2.backport2/lib/sprockets/manifest.rb:119:in `block in compile'
       /tmp/build_4d16c741-7af1-443a-b0f0-8aad5d279d8f/vendor/bundle/ruby/1.9.1/gems/sprockets-2.2.2.backport2/lib/sprockets/manifest.rb:118:in `each'
       /tmp/build_4d16c741-7af1-443a-b0f0-8aad5d279d8f/vendor/bundle/ruby/1.9.1/gems/sprockets-2.2.2.backport2/lib/sprockets/manifest.rb:118:in `compile'
       /tmp/build_4d16c741-7af1-443a-b0f0-8aad5d279d8f/vendor/bundle/ruby/1.9.1/gems/sprockets-rails-2.0.0.backport1/lib/sprockets/rails/task.rb:60:in `block (3 levels) in define'
       /tmp/build_4d16c741-7af1-443a-b0f0-8aad5d279d8f/vendor/bundle/ruby/1.9.1/gems/sprockets-2.2.2.backport2/lib/rake/sprocketstask.rb:146:in `with_logger'
       /tmp/build_4d16c741-7af1-443a-b0f0-8aad5d279d8f/vendor/bundle/ruby/1.9.1/gems/sprockets-rails-2.0.0.backport1/lib/sprockets/rails/task.rb:59:in `block (2 levels) in define'
       Tasks: TOP => assets:precompile
       (See full trace by running task with --trace)
 !
 !     Precompiling assets failed.
 !

 !     Push rejected, failed to compile Multipack app

Я могу воссоздать эту ошибку локально, выполнив следующую команду

 bundle exec rake assets:precompile

Немного фона:

Я пытаюсь интегрировать bootstrap-sass в свое приложение Rails 3.2. Я следовал инструкциям по установке для 3.2.x, изложенным на странице gem:

https://github.com/twbs/bootstrap-sass

Это работает локально, но когда я пытаюсь развернуть, я получаю ошибки, описанные выше.


person scientiffic    schedule 18.09.2014    source источник
comment
Чтобы подтвердить, что вы запустили RAILS_ENV=production bundle exec rake assets:precompile --trace в процессе разработки перед [переходом на Heroku? Я также помню, как однажды мне пришлось запустить rake assets:clean, а затем прекомпилировать перед отправкой в ​​Heroku.   -  person user1854802    schedule 19.09.2014
comment
Спасибо за вашу помощь. когда я пытаюсь запустить первую строку, я получаю ошибку, что база данных project_production не отображается (чего нет). что делает линия, которой вы поделились?   -  person scientiffic    schedule 19.09.2014
comment
Я уверен, что вы читали этот пост? stackoverflow.com/ вопросы/20856247/   -  person dav1dhunt    schedule 19.09.2014
comment
Насколько я понимаю, в процессе разработки java и coffescript предварительно компилируются с каждым действием, которое выполняет контроллер. В производственной среде Heroku предварительная компиляция выполняется (например, сжатие java и coffeescript и т. д.) ДО выполнения кода. Каждый раз, когда вы вносите изменения в javascript/coffeescript в процессе разработки, их необходимо предварительно скомпилировать, прежде чем вы увидите эти изменения в Heroku. Чтобы подтвердить, что вы выполняете предварительную компиляцию в среде разработки?   -  person user1854802    schedule 19.09.2014
comment
@txdavidtx да, я посмотрел этот пост. Несмотря на то, что я использую Rails 3.2, я попытался добавить предложение, и это не помогло решить проблему.   -  person scientiffic    schedule 19.09.2014
comment
@user1854802 user1854802 да, я занимаюсь предварительной компиляцией в разработке   -  person scientiffic    schedule 19.09.2014
comment
У вас есть файл в одной из папок ресурсов без расширения?   -  person Frederick Cheung    schedule 19.09.2014
comment
есть ли простой способ проверить это?   -  person scientiffic    schedule 19.09.2014
comment
Не могли бы вы опубликовать свои манифесты активов application.css и application.js?   -  person sjaime    schedule 19.09.2014


Ответы (1)


Если вы все еще используете это или другие люди находят это, как и я, проблема заключается в том, чтобы поместить что-либо без расширения в app/assets, вы можете безопасно перемещать файлы в vendor/assets. чтобы избежать этой ошибки. Например, я недавно установил сторонние файлы с помощью Bower и установил их местоположение в app/assets, но у меня возникли проблемы с отправкой на heroku. После их извлечения и добавления в поставщика/активы все заработало нормально. См. также: https://github.com/sstephenson/sprockets/issues/347 и https://github.com/stve/bower/pull/4/files за вопрос и решение.

person ObjectNameDisplay    schedule 12.03.2015