启用JavaScript的测试(Bootstrap 3、Rails 4、Travis CI)出错
Error with JavaScript enabled tests (Bootstrap 3, Rails 4, Travis CI)
我有奇怪的错误,只出现在CI环境。此错误不会出现在开发、生产甚至本地测试环境中。
ActionController::RoutingError: No route matches [GET] "/fonts/bootstrap/glyphicons-halflings-regular.svg"
可以在这里找到完整的跟踪
在开发和生产环境中,请求成功转到/assets/bootstrap/glyphicons-halflings-regular.woff
。/fonts/
- /assets
和svg
- woff
部分存在差异。所有由启用JavaScript的测试(Poltergeist/PhantomJS驱动程序)生成的错误。常规水豚测试都是绿色的。Chrome devtools说字体文件的请求是由jquery.js生成的,而不是页面或css文件。
这与bootstrap-sass
gem有关。我使用的是3.3.4.1版本和Rails 4.2。
我所呈现的问题非常相似,但略有不同:/fonts/bootstrap/glyphicons-halflings-regular.woff
的404在CI中是相同的错误,但在dev中/fonts/glyphicons...
的路径不同。
对我有效的解决方案是在包括带SASS的bootstrap JS之前添加以下行:
$icon-font-path: "bootstrap/";
@import 'bootstrap';
我最好的线索来自gem的跟踪器中关于这个问题的评论:https://github.com/twbs/bootstrap-sass/issues/480 issuecomment - 49237119
如果你和我们有类似的设置,你需要在Rails上手动安装Bootstrap,并且必须手动进行一些CSS样式覆盖以将Glyphicon字体指向正确的路径。(/资产/botostrap……而不是/fonts/bootstrap…)。然而,原来的样式仍然存在于bootstrap.css中,尽管它们被覆盖了,但似乎不知怎的,PhantomJS仍然在检测和利用那些原来的样式。
在我们的例子中,我们必须搜索bootstrap.css中所有对glyphicon -halflings的引用,并将路径更改为正确的路径。在我们这样做之后,路由错误就消失了。
祝你好运!
- 如何从rails中的代码中删除新行( )
- Rails File_field最大堆栈大小
- angularjs+rails应用程序中未显示模板
- Rails/JSON:如何将JSON用于jquery UI自动完成表单
- Rails 3.2 js.erb文件转义js
- Rails-JQueryUIAutcomplete和AJAX不工作,可以't连接到数据库
- Jquery:代码在rails中的页面加载时未执行
- Rails操作只调用一次,但我在ajax中每秒钟都调用一次
- Rails/Javascript链接到用于切换多个元素的函数
- 在Rails中更新Div,而不更改更新请求后的视图
- Jquery append oly获取循环Rails中的最后一个elemen
- 通过rails中的Ajax在控制器B的每个视图中渲染控制器a的视图
- 使用主干网和rails的静态页面路由
- 将JavaScript变量保存到Rails模型
- Rails:如何向用户预加载消息
- Ajax and Json with Rails
- Ajax调用ERror Cross Origin REquest:在rails中自动完成大学列表
- Rails:如何获取当前用户'使用Heroku时的时区
- Rails将JavaScript对象存储到Model的有效方式
- 启用JavaScript的测试(Bootstrap 3、Rails 4、Travis CI)出错