Phusion error: undefined method `has?' for Sass::Util:Module
Phusion error: undefined method `has?' for Sass::Util:Module
我在加载网页时收到 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
我的 gem 文件包含:
# 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 在 Rails 网站上创建了 Ruby。我有一个旧得多的站点,可以很好地与 gem 配合使用。我是否错过了整个安装中的一个步骤,或者这是 compass-rails 的错误?
我尝试添加控制器时遇到同样的错误:
rails generate controller home index
经过更多的挖掘,我发现了一个类似的问题。我通过将 gem 文件更改为:
来修复此问题
gem 'compass-rails', github: 'Compass/compass-rails'
然后:
rm gemfile.lock
bundle
看来问题可以在compass-rails 2.0.0
中找到。 3.0.2
版本似乎解决了这个问题。所以一个可能的解决方案是:
# Gemfile
gem 'compass-rails', '~> 3.0.2'
然后bundle update compass-rails
这避免了以 compass-rails git master 分支为目标的实际发布。
我来这里遇到了同样的问题,尝试使用 Compass/Sass 时遇到了 grunt 编译问题,如果这可能对某人有帮助,我的问题是因为我有 Sass 的更新版本(sass-3.7.4) 比兼容罗盘的max-version高,我卸载了sass:
gem uninstall sass
依次卸载指南针,重新安装指南针,让它选择正确的版本,问题就解决了。
gem install compass
我在加载网页时收到 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
我的 gem 文件包含:
# 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 在 Rails 网站上创建了 Ruby。我有一个旧得多的站点,可以很好地与 gem 配合使用。我是否错过了整个安装中的一个步骤,或者这是 compass-rails 的错误?
我尝试添加控制器时遇到同样的错误:
rails generate controller home index
经过更多的挖掘,我发现了一个类似的问题。我通过将 gem 文件更改为:
来修复此问题gem 'compass-rails', github: 'Compass/compass-rails'
然后:
rm gemfile.lock
bundle
看来问题可以在compass-rails 2.0.0
中找到。 3.0.2
版本似乎解决了这个问题。所以一个可能的解决方案是:
# Gemfile
gem 'compass-rails', '~> 3.0.2'
然后bundle update compass-rails
这避免了以 compass-rails git master 分支为目标的实际发布。
我来这里遇到了同样的问题,尝试使用 Compass/Sass 时遇到了 grunt 编译问题,如果这可能对某人有帮助,我的问题是因为我有 Sass 的更新版本(sass-3.7.4) 比兼容罗盘的max-version高,我卸载了sass:
gem uninstall sass
依次卸载指南针,重新安装指南针,让它选择正确的版本,问题就解决了。
gem install compass