AngularJS + Rails — Проблемы при сжатии ресурсов

Недавно я создал приложение AngularJS 1.0.0rc8 с серверной частью Rails 3.2.3, и оно отлично работало в процессе разработки, но после развертывания на В Heroku произошла ошибка Unknown Provider — видимо, приложение не смогло увидеть сервисный объект.

Я знаю, что теперь необходимо включить angular-resource.js в виде отдельного файла и внедрить ngResourceв модуль приложения следующим образом:

// main app javascript file

'use strict';

angular.module('contactapp', ['ngResource']).
  config(['$routeProvider', function($routeProvider) {
  $routeProvider.
      when('/contacts', {template: 'assets/app/partials/contact-list.html', controller: ContactListCtrl}).
      when('/contacts/new', {template: 'assets/app/partials/new-contact.html', controller: ContactListCtrl}).
      when('/contacts/:contact_id', {template: 'assets/app/partials/contact-detail.html', controller: ContactDetailCtrl}).
      otherwise({redirectTo: '/contacts'});      

}]);

Я также знаю, что когда файлы минимизированы, контроллеры не могут сказать, каковы их зависимости, если они также не будут внедрены в модуль приложения. такие объекты контроллера:

ContactListCtrl.$inject = ['$scope', '$http', 'Contacts'];

Я также пытался сделать это другим способом, который рекомендует Angular, с записью скобок и передачей функции, подобной этой:

var ContactListCtrl= ['$scope', '$http', 'Contacts', function($scope, $http, Contacts) { /* constructor body */ }];

Однако, похоже, ничего из этого не работает.

Единственный способ, которым мое приложение могло увидеть предоставленный ресурс, — это отключить сжатие ресурсов в файле Production.rb, например:

# Compress JavaScripts and CSS
  config.assets.compress = false

Мне потребовалось несколько часов, чтобы понять это, но недавно я увидел еще один Rails + Приложение AngularJS, у которого была такая же проблема.

Йенс Краузе пришел к такому же выводу и объясняет его в своем блоге: http://www.websector.de/blog/2012/01/17/fun-with-angularjs-rails-coffeescript-sass- other-cafe-townsend-example/

Если у меня относительно большое приложение и мне нужно сжать ресурсы, как мне обойти это с помощью Angular с Rails?

Спасибо.

8
задан PhillipKregg 18 May 2012 в 22:50
поделиться