Rails 3 + angularjs + minification does not work in production: Unknown provider: eProvider

angularjs, assets, minify, production, ruby-on-rails

Solution

Found it! They never said to apply the injection fixes to services too... The solution is to change this:

angular.module('itemServices', ['ngResource']).
    factory('Item', function($resource){
      return $resource('items/:item_id.json', {}, {
        query: {method:'GET', params:{ item_id: 'all' }, isArray:true}
      });
    });

to this:

angular.module('itemServices', ['ngResource']).
    factory('Item', ['$resource', function($resource){
      return $resource('items/:item_id.json', {}, {
        query: {method:'GET', params:{ item_id: 'all' }, isArray:true}
      });
    }]);

Problem

I've followed all the instructions I can find for fixing minification, e.g. ``` var MyController = function(renamed$scope, renamedGreeter) { ... } MyController.$inject = ['$scope', 'greeter']; ``` and ``` someModule.factory('greeter', ['$window', function(renamed$window) { ...; }]); ``` yet angular refuses to work still. It always throws the error "Unknown provider: eProvider" Here are my two attempts to get it working... can anyone help? https://github.com/jemminger/angular-test1 https://github.com/jemminger/angular-test2 They've already had the assets precompiled and development mode is configured to work as production, so you should just be able to "rails s" to see it (not) work.

Original source