Я изучал эту проблему и обнаружил, что поведение assets:precompile
в зависимости от того, установлены ли RAILS_ENV
и RAILS_GROUPS
, локально или нет.
# This works
→ bundle exec rake assets:precompile RAILS_ENV=production
>>>>>>>> hello from precompile:nondigest
>>>>>>>> hello from precompile
# This works
→ bundle exec rake assets:precompile RAILS_GROUPS=assets
>>>>>>>> hello from precompile:nondigest
>>>>>>>> hello from precompile
→
# This does not work :'(
→ bundle exec rake assets:precompile RAILS_ENV=production RAILS_GROUPS=assets
>>>>>>>> hello from precompile:nondigest
→
Проблема возникает из https://github.com/rails/rails/blob/3-2-stable/actionpack/lib/sprockets/assets.rake в методе invoke_or_reboot_rake_task
, если вы замените строку Rake::Task[task].invoke
на ruby_rake_task task
, тогда она будет работать так, как вы ожидаете.Я выяснил, почему это так, и не нашел причину.
Поскольку обе переменные установлены в пакете сборки Heroku, вы можете создать собственный пакет сборки, не устанавливая настройки как GROUP, так и ENV, хотя я думаю, что это излишне.В этом сценарии вы сможете улучшить assets:precompile:primary
или assets:precompile:all
и достичь результата, аналогичного вашему желаемому замыслу.