我通常对 Rails 3.2、Sprockets 和 Compass 感到困惑。
在这个 article 的顶部,它说
*= require directives
,不再需要使用 Sass-Rails,只需使用@import
代替。 Sass-Rails Github 谈论了一些关于 glob@import
特性的内容,但根本没有谈论@import
是新的*= require
。哪一个或组合:( 我用什么?在
vendor/assets/stylesheets
中使用coderay.css.sass
并在application.css 中使用
将导入@import
.sassmy_coderay.css.sass
? 我不知道,因为我在my_coderay.css.sass
中使用了 Compass Mixins(因此在该文件的顶部放置了一个@import "compass/css3"
)我收到一个错误:
“未找到或无法读取要导入的文件: compass ”在这个 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)最后,如果我从 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:in
open'
来自/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:in
app_script_text'
最佳答案
*= 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。它还解决了通配问题。
正如Rails Guide中所说、
app/assets
、lib/assets
或vendor/assets
您的应用程序以及您的 gems/engines 中的目录包含在Rails.application.config.assets.paths
。我验证了如果正确安装 compass ,compass/css3 库中的 +opacity(.5) 会按预期工作。这引出了下一点:rails31
分支现已合并到master
中,0.12.alpha 版本已经发布,应该支持 Rails 3.1。然而,这个版本并非没有错误。所以我建议依赖最新的主修订版:gem 'compass', git: 'git://github.com/chriseppstein/compass', branch: 'master'
我目前遇到的唯一错误是在尝试编译创建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/