begin..rescue

Programming is everything and everything is programming

Usando O 'Assets Pipeline' + Compressão De Javascript Com AngularJS

Se você, como eu, está recebendo o erro

1
Unknown provider: eProvider <- e

ao fazer deploy de uma aplicação Rails usando Asset Pipeline + AngularJS, então muito provavelmente seus arquivo de configurações referente ao ambiente onde o deploy está sendo realizado contém a linha:

1
config.assets.js_compressor = :uglifier

Este erro acontece porquê a obfuscação que ocorre no processo de obfuscação usando o uglifier impede o AngularJS de realizar a identificação interna de DI (dependency injection).

Para corrigir o problema, é simples. Basta trocar a linha mencionada acima por:

1
config.assets.js_compressor = Sprockets::LazyCompressor.new { Uglifier.new(:mangle => false) }

Isso vai impedir o obfuscador do unglifier de atuar sob nomes de variáveis e irá corrigir o problema.