ruby-on-rails - Rails 3.1 compass 和链轮。使困惑

标签 ruby-on-rails sass compass-sass

我通常对 Rails 3.2、Sprockets 和 Compass 感到困惑。

  1. 在这个 article 的顶部,它说 *= require directives,不再需要使用 Sass-Rails,只需使用 @import 代替。 Sass-Rails Github 谈论了一些关于 glob @import 特性的内容,但根本没有谈论 @import 是新的 *= require。哪一个或组合:( 我用什么?

  2. vendor/assets/stylesheets 中使用 coderay.css.sass 并在 application.css 中使用 @import .sass 将导入 my_coderay.css.sass? 我不知道,因为我在 my_coderay.css.sass 中使用了 Compass Mixins(因此在该文件的顶部放置了一个 @import "compass/css3")我收到一个错误:
    “未找到或无法读取要导入的文件: compass ”

  3. 在这个 article 中,它讨论了配置 Rail 的 Sass 引擎以了解 Assets 路径。但我认为 Sass-Rails 已经@import Assets 路径在哪里?

    另外,当我尝试包含 compass 的 31 分支时......

    gem 'compass', :git => 'git://github.com/chriseppstein/compass.git', :branch => 'rails31'

    我收到错误...
    使用来自 git://github.com/chriseppstein/compass.git (at rails31)/Users/george.norris/.rvm/rubies/ruby-1.9.2-p180/的 compass (0.12.0.alpha.0.22e2458) lib/ruby/site_ruby/1.9.1/rubygems/installer.rb:365:in `initialize': No such file or directory -/Users/george.norris/.rvm/gems/ruby-1.9.2-p180/bundler/gems/gems/compass-0.12.0.alpha.0.22e2458/bin/compass (Errno::ENOENT)

  4. 最后,如果我从 vendor/assets 中取出 coderay.css.sass 并将其放入 app/assets,我不会收到上述错误。但我发现它在 public/application.css.css (.css.css ???) 中吐出错误

    语法错误:找不到或无法读取要导入的文件:base. 加载路径: compass::SpriteImporter /Users/geonorr/Sites/quasar/public/stylesheets/sass /Users/geonorr/Sites/quasar/app/assets/stylesheets /Users/geonorr/.rvm/gems/ruby-1.9.2-p180/gems/compass-0.11.5/frameworks/blueprint/stylesheets /Users/geonorr/.rvm/gems/ruby-1.9.2-p180/gems/compass-0.11.5/frameworks/compass/stylesheets 在/Users/geonorr/Sites/quasar/app/的第 3 行

我正在使用 Rails (3.1.0)、Sass (3.1.7)、Sass-Rails (3.1.0)、Compass (0.11.5)


感谢您的回复。感觉离自己越来越近了……
包括 Compass Master Branch 并出现此错误:

gem 'compass', :git => 'git://github.com/chriseppstein/compass', :branch => 'master'

使用来自 git://github.com/chriseppstein/compass (at master)/Users/gnee/.rvm/rubies/ruby-1.9.2-p180/lib/的 compass (0.12.alpha.0.d03d529) ruby/site_ruby/1.9.1/rubygems/installer.rb:365:in initialize': 没有这样的文件或目录 -/Users/gnee/.rvm/gems/ruby-1.9.2-p180/bundler/gems/gems/compass-0.12.alpha.0.d03d529/bin/compass (Errno::ENOENT) 来自/Users/gnee/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/installer.rb:365:inopen' 来自/Users/gnee/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/installer.rb:365:in shebang' 来自/Users/gnee/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/installer.rb:456:inapp_script_text'

最佳答案

  1. *= require comments 从 Sass 的角度来看可以看作是一种 hacky 解决方法,因为 Sass 有一个专门的语言特性:@import 指令。 @import 告诉链轮要做什么。当您从 Rails 3.0 项目迁移时,请将所有 @import 语句保持原样。目前,唯一的问题是“通配”:如何告诉 Rails/Sprockets 也考虑除 application.css.s(ac)ss 之外的其他 Sass 文件。

    这里是 the latest Compass installation guide对于 Rails 3.1。它还解决了通配问题。

  2. 正如Rails Guide中所说、app/assetslib/assetsvendor/assets 您的应用程序以及您的 gems/engines 中的目录包含在 Rails.application.config.assets.paths。我验证了如果正确安装 compass ,compass/css3 库中的 +opacity(.5) 会按预期工作。这引出了下一点:

  3. rails31 分支现已合并到 master 中,0.12.alpha 版本已经发布,应该支持 Rails 3.1。然而,这个版本并非没有错误。所以我建议依赖最新的主修订版:

    gem 'compass', git: 'git://github.com/chriseppstein/compass', branch: 'master'

  4. 我目前遇到的唯一错误是在尝试编译创建sprites 的语句时出现“undefined method nil.[]”异常。参见 this issue .解决方法是在 config/compass.rb

    中设置 sass_options = {quite: true}

进一步注意:我的 Gemfile 中不再有 Sass。我认为您可以在依赖 sass-rails 时删除该依赖项。

关于ruby-on-rails - Rails 3.1 compass 和链轮。使困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7488218/

相关文章:

ruby-on-rails - 将记录与显示操作中的嵌套路由相匹配

ruby-on-rails - 为什么我的某些用户字段会被记住并预先填充,而其他用户字段则不会?

reactjs - 将 SASS Bootstrap 导入 React

html - Bootstrap v4 是如何加载 _reboot.scss 的?

css - 带有伪类的 compass (SASS) 规则

css - Sass/Compass - 覆盖 css 以减慢速度

javascript - f.select + javascript 在选择菜单中添加和删除 div 样式

ruby-on-rails - 如何避免 Rails 在错误的内容类型上崩溃

html - 在 ionic 框架中使用复选框时如何从 ionic 标签中删除空间

sass - SASS/Compass 可以将 foo.scss 编译为 foo.min.css 和 foo.dbg.css 吗?