Rails,尝试运行资产:预编译返回“已经被要求”

时间:2013-03-15 03:03:14

标签: ruby-on-rails

我第一次将应用程序转移到生产中时发现了一些问题。我发现我应该在生产中使用预编译资产,所以我尝试编译它们,但是出现了这个错误:

rake aborted!
/var/www/tracker/app/assets/templates/snippets/comment.html.erb has already been required
  (in /var/www/tracker/app/assets/javascripts/angularjs/routes.coffee.erb)

这里最令人困惑的是在routes.coffee.erb中没有提到文件comment.html.erb,它只包含angularjs的几条路线:

angular.module('app', ['ui', 'app.services', 'app.directives', 'app.filters', 'ngCookies', 'ngSanitize', 'mwTable'])
  .config ['$routeProvider', ($routeProvider) ->

    $routeProvider.when '/',
      templateUrl: '<%= asset_path('announces/list.html') %>'
      controller: AnnouncesListCtrl

    $routeProvider.when '/announce/:fid',
      templateUrl: '<%= asset_path('announces/view.html') %>'
      controller: AnnouncesViewCtrl

    $routeProvider.when '/announce/:fid/edit',
      templateUrl: '<%= asset_path('announces/edit.html') %>'
      controller: AnnouncesEditCtrl

    $routeProvider.when '/registration',
      templateUrl: '<%= asset_path('users/edit.html') %>'
      controller: UsersEditCtrl

    $routeProvider.when '/registration_successful',
      templateUrl: '<%= asset_path('users/registration_successful.html') %>'
      controller: UsersEditCtrl

    $routeProvider.when '/users',
      templateUrl: '<%= asset_path('users/list.html') %>'
      controller: UsersListCtrl

    $routeProvider.otherwise({redirectTo: '/'})

  ]

我唯一能想到的就是我使用<%= asset_path('announces/view.html') %>,后者又包含<%= asset_path('snippets/comment.html')%>。如果这导致问题而不是唯一的解决方案是不使用asset_path。但是可以吗?

完整的错误消息在这里:https://gist.github.com/SET/5167092。尽管规模很大,但99%没用。

此外,由于我是Rails的新手(来自PHP),我无法理解为什么它已经是必需的东西如此重要?你需要它几次但只加载一次;为什么这会引起问题?

更新 我解决了将&lt;%= asset_path(template)%&gt;`替换为'/ assets / template'的问题,但这不是一个难看的解决方案吗?

0 个答案:

没有答案