我在加载网页时收到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
答案 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(sass-3.7.4)的更新版本更高而引起的认为max-version与罗盘兼容,我卸载了sass:
gem uninstall sass
依次卸载了指南针,然后重新安装了指南针,使其选择了正确的版本,并解决了问题。
gem install compass