【问题标题】:@import not working for my "application.css.scss" file in Rails project, only works as "application.css"@import 不适用于我在 Rails 项目中的“application.css.scss”文件,只能用作“application.css”
【发布时间】:2014-04-15 09:36:29
【问题描述】:

所以我的 Rails 项目遇到了问题。在我的 Gemfile 中,这是我的代码:

source 'https://rubygems.org'
gem 'rails', '4.0.3'
gem 'sqlite3'
gem 'thin'
gem 'uglifier', '>= 1.3.0'

group :assets do
gem 'sass-rails', '~> 4.0.1'
gem 'coffee-rails', '~> 4.0.0'
gem 'eco'
gem 'compass-rails'
gem 'bootstrap-sass'
end

gem 'jquery-rails'

gem 'turbolinks'

gem 'jbuilder', '~> 1.2'

group :doc do
   gem 'sdoc', require: false
end

这是我的 application.css.scss 文件:

@import "bootstrap";

如果我将 'group :assets do' 屏蔽掉,而只是尝试在不带它的情况下运行 rails,我会遇到此错误:

/Library/Ruby/Gems/2.0.0/gems/compass-0.12.2/lib/compass/sass_extensions/monkey_patches/browser_support.rb:1:in `require': cannot load such file -- sass/script/node (LoadError)
    from /Library/Ruby/Gems/2.0.0/gems/compass-0.12.2/lib/compass/sass_extensions/monkey_patches/browser_support.rb:1:in `<top (required)>'
    from /Library/Ruby/Gems/2.0.0/gems/compass-0.12.2/lib/compass/sass_extensions/monkey_patches.rb:2:in `require'
    from /Library/Ruby/Gems/2.0.0/gems/compass-0.12.2/lib/compass/sass_extensions/monkey_patches.rb:2:in `block in <top (required)>'
    from /Library/Ruby/Gems/2.0.0/gems/compass-0.12.2/lib/compass/sass_extensions/monkey_patches.rb:1:in `each'
    from /Library/Ruby/Gems/2.0.0/gems/compass-0.12.2/lib/compass/sass_extensions/monkey_patches.rb:1:in `<top (required)>'
    from /Library/Ruby/Gems/2.0.0/gems/compass-0.12.2/lib/compass/sass_extensions.rb:9:in `require'
    from /Library/Ruby/Gems/2.0.0/gems/compass-0.12.2/lib/compass/sass_extensions.rb:9:in `<top (required)>'
    from /Library/Ruby/Gems/2.0.0/gems/compass-0.12.2/lib/compass.rb:5:in `require'
    from /Library/Ruby/Gems/2.0.0/gems/compass-0.12.2/lib/compass.rb:5:in `block in <top (required)>'
    from /Library/Ruby/Gems/2.0.0/gems/compass-0.12.2/lib/compass.rb:4:in `each'
    from /Library/Ruby/Gems/2.0.0/gems/compass-0.12.2/lib/compass.rb:4:in `<top (required)>'
    from /Library/Ruby/Gems/2.0.0/gems/compass-rails-1.1.3/lib/compass-rails.rb:1:in `require'
    from /Library/Ruby/Gems/2.0.0/gems/compass-rails-1.1.3/lib/compass-rails.rb:1:in `<top (required)>'
    from /Library/Ruby/Gems/2.0.0/gems/bundler-1.5.3/lib/bundler/runtime.rb:76:in `require'
    from /Library/Ruby/Gems/2.0.0/gems/bundler-1.5.3/lib/bundler/runtime.rb:76:in `block (2 levels) in require'
    from /Library/Ruby/Gems/2.0.0/gems/bundler-1.5.3/lib/bundler/runtime.rb:72:in `each'
    from /Library/Ruby/Gems/2.0.0/gems/bundler-1.5.3/lib/bundler/runtime.rb:72:in `block in require'
    from /Library/Ruby/Gems/2.0.0/gems/bundler-1.5.3/lib/bundler/runtime.rb:61:in `each'
    from /Library/Ruby/Gems/2.0.0/gems/bundler-1.5.3/lib/bundler/runtime.rb:61:in `require'
    from /Library/Ruby/Gems/2.0.0/gems/bundler-1.5.3/lib/bundler.rb:131:in `require'
    from /Users/Stuart/Documents/Code/Sublime/one_kingdom_design/config/application.rb:12:in `<top (required)>'
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require'
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require'
    from /Users/Stuart/Documents/Code/Sublime/one_kingdom_design/config/environment.rb:2:in `<top (required)>'
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require'
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require'
    from /Users/Stuart/Documents/Code/Sublime/one_kingdom_design/config.ru:3:in `block in <main>'
    from /Library/Ruby/Gems/2.0.0/gems/rack-1.5.2/lib/rack/builder.rb:55:in `instance_eval'
    from /Library/Ruby/Gems/2.0.0/gems/rack-1.5.2/lib/rack/builder.rb:55:in `initialize'
    from /Users/Stuart/Documents/Code/Sublime/one_kingdom_design/config.ru:1:in `new'
    from /Users/Stuart/Documents/Code/Sublime/one_kingdom_design/config.ru:1:in `<main>'
    from /Library/Ruby/Gems/2.0.0/gems/thin-1.6.2/lib/rack/adapter/loader.rb:33:in `eval'
    from /Library/Ruby/Gems/2.0.0/gems/thin-1.6.2/lib/rack/adapter/loader.rb:33:in `load'
    from /Library/Ruby/Gems/2.0.0/gems/thin-1.6.2/lib/rack/adapter/loader.rb:42:in `for'
    from /Library/Ruby/Gems/2.0.0/gems/thin-1.6.2/lib/thin/controllers/controller.rb:170:in `load_adapter'
    from /Library/Ruby/Gems/2.0.0/gems/thin-1.6.2/lib/thin/controllers/controller.rb:74:in `start'
    from /Library/Ruby/Gems/2.0.0/gems/thin-1.6.2/lib/thin/runner.rb:199:in `run_command'
    from /Library/Ruby/Gems/2.0.0/gems/thin-1.6.2/lib/thin/runner.rb:155:in `run!'
    from /Library/Ruby/Gems/2.0.0/gems/thin-1.6.2/bin/thin:6:in `<top (required)>'
    from /usr/bin/thin:23:in `load'
    from /usr/bin/thin:23:in `<main>'

要摆脱这种情况,我必须使用组 :assets do block。但是,一旦我启动并运行 rails 服务器,如果 '@import "bootstrap";'在 application.css.scss 中(因为文件附加了 .scss),当我尝试在浏览器中加载我的 rails 项目时出现以下错误:

 Showing /Users/Stuart/Documents/Code/Sublime/one_kingdom_design/app/views/layouts/application.html.erb where line #5 raised:

File to import not found or unreadable: bootstrap.
Load paths:
  /Users/Stuart/Documents/Code/Sublime/one_kingdom_design/app/assets/images
  /Users/Stuart/Documents/Code/Sublime/one_kingdom_design/app/assets/javascripts
  /Users/Stuart/Documents/Code/Sublime/one_kingdom_design/app/assets/stylesheets
  /Users/Stuart/Documents/Code/Sublime/one_kingdom_design/vendor/assets/javascripts
  /Users/Stuart/Documents/Code/Sublime/one_kingdom_design/vendor/assets/stylesheets
  /Library/Ruby/Gems/2.0.0/gems/turbolinks-2.2.1/lib/assets/javascripts
  /Library/Ruby/Gems/2.0.0/gems/jquery-rails-3.1.0/vendor/assets/javascripts
  (in /Users/Stuart/Documents/Code/Sublime/one_kingdom_design/app/assets/stylesheets/application.css.scss:13)

这是它突出显示的提取源:

<html>
<head>
<title>OneKingdomDesign</title>
<%= stylesheet_link_tag "application", media: "all", "data-turbolinks-track" => true %>//this line is highlighted in the firefox browser
<%= javascript_include_tag "application", "data-turbolinks-track" => true %>
<%= csrf_meta_tags %>
</head>

谁能帮我找出这个问题的根源可能是什么?我相信它与 Sass 宝石有关,但我不确定。如果这很重要,我正在使用 Ruby 2.0.0p247。

编辑:我已经缩小了范围,这不是 sass,而是指南针导轨。不管我怎么尝试,指南针都在和我争论。

【问题讨论】:

  • 你使用的是什么版本的 Sass?
  • 4.0.1?但是我只是做了一些更改,并摆脱了组 :assets do block 并且只取出了 'gem 'compass-rails'' 行,服务器运行并且页面刷新得很好。所以它必须与“gem'compass-rails'”有关
  • 我对 Rails 特定的 gem 一无所知,但我知道当前稳定版本的 Sass 和 Compass 之间存在版本冲突。如果您有当前稳定版的 Sass,则需要获取边缘版本的 Compass。
  • 我在从 rails 3.2 迁移到 rails 4 的应用程序中遇到了同样的问题。我使用的是 ruby​​ 1.9.3。我没有使用指南针,只是 bootstrap-sass。 rake assets:预编译在这里失败:.rvm/gems/ruby-1.9.3-p392/gems/sass-rails-4.0.1/lib/sass/rails/importer.rb:84:in `evaluate'

标签: javascript ruby-on-rails ruby backbone.js sass


【解决方案1】:

我遇到了类似的问题,但从 sass 4.0.1 更新为我解决了这个问题。

gem 'sass-rails', '4.0.3'

【讨论】:

    【解决方案2】:

    我在我的 rails4 应用程序中使用以下内容。

    gem 'sass-rails', '~> 4.0.0'
    gem 'bootstrap-sass'
    

    【讨论】:

      【解决方案3】:

      我也遇到过类似的问题,我想我已经彻底解决了

      首先,我可以解释为什么只有在 gemfile 中不包含资产组时才会出现错误。 Rails 4 不希望其中有资产组,也不包含 gem。这意味着如果您的 basecamp gem 包含在 :assets do block 组中,它不会被包含在内,因此预编译没有问题,但当您尝试使用 @import 包含 bootcamp 文件时也不会出现问题。

      现在了解为什么预编译出错了。我注意到这里:

      http://rubygems.org/gems/sass-rails

      Sass-rails 需要小于或等于 2.11.0 的 sprocket,即它与我在捆绑包中得到的版本 2.11.1 不兼容。我认为这些事情应该由捆绑程序自动处理,所以我不知道那里发生了什么。我建议您查看您的 Gemfile.lock 并检查您拥有的 sass 版本(包含在 sass-rails 中)和 bootstrap-sass 以及所有各种依赖项,并确保 ruby​​gems 同意它们是兼容的。

      希望对您有所帮助。

      【讨论】:

        猜你喜欢
        • 2016-02-11
        • 2014-01-19
        • 2015-12-07
        • 2014-05-09
        • 2023-04-11
        • 2023-01-02
        • 1970-01-01
        • 2014-07-12
        • 2015-07-20
        相关资源
        最近更新 更多