错误的错误:未定义的方法`有?' for Sass :: Util:Module

时间:2017-07-23 20:27:34

标签: ruby-on-rails rubygems passenger compass-rails

我在加载网页时收到Phusion发出的以下错误:

There was an error while trying to load the gem 'compass-rails'.
Gem Load Error is: undefined method `has?' for Sass::Util:Module
Did you mean?  hash
               Hash
Backtrace for gem load error is:
/Volumes/Data/htdocs/zetcho/vendor/bundle/gems/compass-0.12.2/lib/compass/sass_extensions/functions/urls.rb:5:in `has?'

指定地点的代码是:

module Compass::SassExtensions::Functions::Urls


def self.has?(base, instance_method)
  Sass::Util.has?(:instance_method, base, instance_method)
end

我的宝石文件包含:

# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '~> 5.1.2'

# Use mysql as the database for Active Record
gem 'mysql2', '~> 0.3.18'

# Use SCSS for stylesheets
gem 'sass-rails', '~> 5.0'

# Use Compass for stylesheets
gem 'compass-rails'

# Use the Compass extension susy
gem "sprockets"
gem 'susy'

我刚刚使用Rails 5.1.2和ruby 2.3.1创建了Ruby on Rails站点。我有一个更老的网站,与宝石一起工作正常。我是否错过了整体安装中的一个步骤,或者这是指南针导轨的错误?

当我尝试添加控制器时遇到了同样的错误:

rails generate controller home index

3 个答案:

答案 0 :(得分:9)

经过多次挖掘,我发现了类似的问题。我通过将gem文件更改为:

来修复此问题
gem 'compass-rails', github: 'Compass/compass-rails'

然后:

rm gemfile.lock
bundle

答案 1 :(得分:3)

似乎问题可以在compass-rails 2.0.0中找到。版本3.0.2似乎解决了这个问题。所以可能的解决方案是:

# Gemfile
gem 'compass-rails', '~> 3.0.2'

然后bundle update compass-rails

这样可以避免使用compass-rails git master分支来支持实际版本。

答案 2 :(得分:1)

我来这里时遇到一个同样的问题,就是尝试使用Compass / Sass时发出了咕unt的编译问题,如果这可能对某人有所帮助,则是由于我的Sass(s​​ass-3.7.4)的更新版本更高而引起的认为max-version与罗盘兼容,我卸载了sass:

gem uninstall sass

依次卸载了指南针,然后重新安装了指南针,使其选择了正确的版本,并解决了问题。

gem install compass