小编Rya*_*lah的帖子

用于IE 4096选择器/样式表限制的Rails资产管道解决方案

问题

Microsoft的IE支持文档在Internet Explorer 6-9中解释了这一点:

  1. 不应用前31个样式标记之后的所有样式标记.
  2. 不应用前4,095条规则之后的所有样式规则.
  3. 在使用@import规则连续导入导入其他样式表的外部样式表的页面上,将忽略深度超过三级的样式表.

脚本演示有很多证据表明存在这个问题.另见Bless.

解决方案需要

我们需要一种方法来分割由资源管道中的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

34
推荐指数
2
解决办法
6343
查看次数

由于Icon,Git忽略了图标文件?规则

我有一个包含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)

什么可能是这个问题的优雅解决方案?

git gitignore

10
推荐指数
2
解决办法
3097
查看次数

Phusion Passenger错误'Unknown key(s):through'

我的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)

ruby-on-rails passenger

1
推荐指数
1
解决办法
829
查看次数