Microsoft的IE支持文档在Internet Explorer 6-9中解释了这一点:
- 不应用前31个样式标记之后的所有样式标记.
- 不应用前4,095条规则之后的所有样式规则.
- 在使用@import规则连续导入导入其他样式表的外部样式表的页面上,将忽略深度超过三级的样式表.
我们需要一种方法来分割由资源管道中的Sprockets生成的已编译样式表,以使最大选择器数保持在4096以下,并在部署的Rails应用程序的HTML中链接到它们.我们如何将已处理资产(特别是样式表)的编译输出作为参数传递给可以修改文件的方法?
请参阅以下尝试开始的地方.如果有人可以帮我找到一种方法来制作可操作的(或者一种全新的解决方案),那就太棒了!
创建Bless是为了解决这个问题,方法是拆分样式表以使每张纸的最大选择器数量保持在限制之下.Bless在node.js的服务器上运行.我还没有看到类似Ruby的东西.Eric Fields试图将用罗盘编译的资产提供给Bless(在节点中运行),但该解决方案依赖于Compass处理资产编译,因此似乎不适用于资产管道.请注意,Bless不是链接到多个样式表,而是将@include
语句添加到第一个工作表,这可能是要避免触及标记的方法.
当Christian Peters(@crispy)发现这个问题时,他实现了像Bless这样的分离器,它也将Compass输出传递给自定义模块,该模块在Rails 3.1之前运行良好.后来,他使用SprocketsEngine调整了他的拆分器,以便与Rails Asset管道集成.我已经尝试实现新代码,但它似乎没有自动运行(虽然在控制台中手动调用时分割器工作正常).
有关IE 6-9中CSS限制的更多信息,请参阅以下相关问题:
css internet-explorer ruby-on-rails sprockets asset-pipeline
我有一个包含icons/
目录中SVG图像的仓库.尝试将这些图像添加到repo失败,Git抱怨错误消息:
The following paths are ignored by one of your .gitignore files:
public/img/icons/my-icon.svg
Use -f if you really want to add them.
Run Code Online (Sandbox Code Playgroud)
当我使用跟踪被忽略的文件时git-check-ignore
,我发现Icon?
我.gitignore_global
文件中的规则是罪魁祸首.
$ git check-ignore -v public/img/icons/my-icon.svg
/Users/ryanatallah/.gitignore_global:42:Icon? public/img/icons/my-icon.svg
Run Code Online (Sandbox Code Playgroud)
什么可能是这个问题的优雅解决方案?
我的rails应用程序在我的本地测试服务器上运行正常,但是当我部署到我的生产(Passenger)服务器时,我收到以下错误:
Error message:
Unknown key(s): through
Exception class:
ArgumentError
Run Code Online (Sandbox Code Playgroud)
为什么会发生这种情况?代码本身不存在缺陷,因为在开发服务器上一切正常.令人讨厌的代码非常简单:
class PageEvent < Event
belongs_to :page, :through => :calendar
end
Run Code Online (Sandbox Code Playgroud)
哪里
class Event < ActiveRecord::Base
belongs_to :calendar, :polymorphic => true
end
Run Code Online (Sandbox Code Playgroud)
和
class Calendar < ActiveRecord::Base
has_many :events, :dependent => :destroy, :inverse_of => :calendar, :as => :calendar, :class_name => "SpecialEvent"
end
Run Code Online (Sandbox Code Playgroud)