2012-04-01 17 views
9

Ben lib/görevler/foo.rake bu vardır: Neden Rake görev geliştirme yerel ortamım ile Heroku Cedar'e dağıtılırken farklılık gösteriyor?

Rake::Task["assets:precompile"].enhance do 
    print ">>>>>>>> hello from precompile" 
end 
Rake::Task["assets:precompile:nondigest"].enhance do 
    print ">>>>>>>> hello from precompile:nondigest" 
end 

Ben yerel rake assets:precompile çalıştırmak

, hem mesajlar yazdırılır.

Heroku'ya bastığımda, yalnızca en büyük ileti yazdırılır. Ancak, according to the buildpack, itme yerel olarak tam olarak aynı komutu yürütüyor.

Neden temel varlıklar için geliştirme: precompile case heroku üzerinde çalışmıyor, ancak yerel olarak çalışıyor mu?

cevap

6

özel varlık derleme görevlerini desteklemez ve ben assets:precompile davranışı bağlı öğrendim RAILS_ENV ve RAILS_GROUPS eğer her ikisi de bu yerel olarak ayarlanmış veya bir göz atmıyor. Eğer bunu beklenen şekilde o zaman çalışır ruby_rake_task task ile Rake::Task[task].invoke hattını değiştirmek eğer

# 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 
    → 

sorun invoke_or_reboot_rake_task yöntemde https://github.com/rails/rails/blob/3-2-stable/actionpack/lib/sprockets/assets.rake geliyor. Bunun tam olarak neden olduğunu anladım ve nedenini bulamadım.

Her iki değişken de Heroku derleme paketinde ayarlandığından, GRUP ve ENV ayarlarını yapmadan özel bir derleme paketi oluşturabilirsiniz, ancak bunun aşırı olduğunu düşünüyorum. Bu senaryoda, assets:precompile:primary veya assets:precompile:all'u geliştirebilmeniz ve istediğiniz niyete benzer bir sonuç elde edebilmeniz gerekir.

+1

Varlıkları geliştirdim: precompile: nondigest ve bu benim için çalışıyor gibi görünüyor – Josh

2

RAILS_ENV=production ve RAILS_GROUPS=assets ayarlıyor musunuz?

Ayrıca this post göre Heroku ... ben bu sorunun nedenini araştırıyoruz oldum

+0

Nerede ayarlıyorum? –

İlgili konular