Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何跳过已经缩小的Javascript的预编译,仍然保留Require序列?_Ruby On Rails_Angularjs_Asset Pipeline_Ruby On Rails 4_Restangular - Fatal编程技术网

Ruby on rails 如何跳过已经缩小的Javascript的预编译,仍然保留Require序列?

Ruby on rails 如何跳过已经缩小的Javascript的预编译,仍然保留Require序列?,ruby-on-rails,angularjs,asset-pipeline,ruby-on-rails-4,restangular,Ruby On Rails,Angularjs,Asset Pipeline,Ruby On Rails 4,Restangular,我在Rails 4中使用Restangular,我希望告诉Rails跳过预编译Restangular,因为我使用的是官方的简化版本,它不会破坏变量名,以防止角度依赖注入出现问题 这是我的应用程序.js.coffee: #= require jquery #= require jquery_ujs #= require unstable/angular #= require underscore #= require_self #= require_tree ./vendor #= require

我在Rails 4中使用Restangular,我希望告诉Rails跳过预编译Restangular,因为我使用的是官方的简化版本,它不会破坏变量名,以防止角度依赖注入出现问题

这是我的
应用程序.js.coffee

#= require jquery
#= require jquery_ujs
#= require unstable/angular
#= require underscore
#= require_self
#= require_tree ./vendor
#= require_tree ./configs
#= require_tree ./models
#= require_tree ./directives
#= require_tree ./filters
#= require_tree ./controllers
#= require_tree ./misc

window.app = angular.module "myApp", ["restangular"]
缩小的
restangular.min.js
文件位于“javascripts/vendor”目录下。它需要在Angular之后和我所有的控制器、模型和东西加载之前加载

我如何告诉Rails资产管道跳过缩小重新启动的文件,并且仍然以正确的顺序加载它

谢谢

编辑:
我找到了解决方案并回答了自己的问题。

我也在寻找解决这个问题的方法——跳过第三方库的缩小——但同时:

# config/environments/production.rb
config.assets.js_compressor = Uglifier.new(:mangle => false)
然后将您的供应商库切换到未统一的库,让Rails处理它,直到您/我们找到更好的选择

更多丑陋选项。

解决方案: 我使用gem来避免我的角度代码的资产管道(uglifiermangle)问题。我从来不知道像restangular这样的第三方库也可以通过ngmin-rails。因此,我在预先缩小的
restangular.min.js
文件的顶部添加了以下行,它就像一个符咒

var-app=angular.module(“myApp”)


顺便说一句,我还从我的应用程序布局html中删除了这一行:

如果我理解正确,您想排除某个特定的文件吗?@David:是的,这是正确的。我可以在我的应用程序布局中引用这样的文件
。问题是这个文件需要在angular之后加载,然后再加载其他所有内容。嘿,谢谢你的回答。我尝试在应用程序布局html中的
之后添加
。它在开发模式下工作,但在生产模式下,Rails“拒绝为文件提供服务……因为它的MIME类型是text/html”(不是确切的错误消息,但非常接近)。如果我们能将Uglifier配置为只关闭特定文件的mangle,那就太棒了。无论如何,谢谢!您是否运行了rake资产:预编译?是的。顺便说一句,这是该MIME类型错误的确切消息:
拒绝从执行脚本'http://example.com/javascripts/vendor/restangular.min.js'因为其MIME类型('text/html')不可执行,并且启用了严格的MIME类型检查。
f在该URL处提供给浏览器的文件可能是HTML错误消息。您添加了哪一行?这并不是跳过预先缩小的文件的真正解决方案。很高兴它对你有用,但它真的是你问题的正确答案吗?你是对的。我的解决方案并没有解决这个问题,但它解决了我的问题——真正的问题,这就是我为什么首先提出这个问题的原因。我很感谢你为帮助我所做的努力,以及你所建议的解决方法,但无论是对这个问题还是对我所遇到的问题,这都不是一个完美的解决方案。另一方面,你的变通方法非常接近于具体回答这个问题,因此为了弥补这个问题,我对你的答案投了更高的票,使你的努力值得。再次感谢!