ruby-on-rails - 如何将扩展加载到 Sass::Script::Functions 模块?

标签 ruby-on-rails sass compass-sass

根据以下建议,我正在尝试扩展 Sass:Script::Functions 模块:https://gist.github.com/481261/dd07a52829886ab1ad0875a8895f0100c4b925ab .问题是,我应该在哪里放置 sass-hex.rb 文件,我是否必须做任何事情来“加载”模块扩展?我尝试将文件放在 config/中,但似乎没有加载。当我进入 rails 控制台并输入 Sass::Script::Functions::hex 时,我得到:“NoMethodError: undefined method `hex' for Sass::Script::Functions:Module”。

我是 Rails 的新手,所以答案可能是非常明显和微不足道的。也许这就是为什么所有讨论扩展 Sass::Script::Functions 的网站都没有提到如何将扩展实际连接到代码中的原因。这是官方文档,但在这方面也没有帮助:http://sass-lang.com/docs/yardoc/Sass/Script/Functions.html#adding_custom_functions .

更新:

因此,我将方法的定义从“def hex ...”更改为“def self.hex ...”,现在 Sass::Script::Functions.hex 可以工作了。我仍然觉得我错过了一些东西,因为没有人在任何地方都建议过“自我”。需要...或者我在上面的示例中错误地调用了该方法?

此外,问题是根本没有从我使用它的 CSS 文件中调用“hex”方法。

最后更新:

解决方案是实际执行我最初所做的:将代码放在 config/目录中(在我的情况下,在 compass.rb 文件中)。

我被卡住并认为它对我不起作用有两个原因:

  • 无法从控制台调用 Sass::Script::Functions::hex ... 不知道为什么,但我错误地假设如果我正确安装,我将能够以这种方式对其进行测试。
  • 由于我来回尝试了很多事情,我可能从来没有在 config/compass.rb 文件中使用 hex 函数、从 .css 文件中调用它并重新启动 rails 服务器的正确组合。

  • 真是浪费时间-我希望这可以帮助其他人避免它...

    最佳答案

    我刚刚解决了这个问题,以便能够使用 compact Compass 的功能。这是整个独家新闻:

    lib/sass.rb(创建了一个新文件)

    # Compact function pulled from compass
    module Sass::Script::Functions
    
      module CustomSassExtensions
        def compact(*args)
          sep = :comma
          if args.size == 1 && args.first.is_a?(Sass::Script::List)
            args = args.first.value
            sep = args.first.separator
          end
          Sass::Script::List.new(args.reject{|a| !a.to_bool}, sep)
        end
      end
    
      include CustomSassExtensions
    
    end
    

    config/application.rb (将其放在 class Application 内,紧跟在 config.autoload_paths 行之后)
    if config.respond_to?(:sass)
      require "#{config.root}/lib/sass.rb"
    end
    

    让我知道它是否对您有用。

    关于ruby-on-rails - 如何将扩展加载到 Sass::Script::Functions 模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8690372/

    相关文章:

    html - 在子元素上应用父样式

    javascript - 悬停时模糊整个背景

    ruby - 安装的 Compass 和 Sass 和 compass watch 报错

    ruby-on-rails - has_one 与同一类的关系

    ruby-on-rails - quill js羊皮纸错误

    ruby-on-rails - 为 ruby​​onrails 编写测试

    javascript - Rails 3 使 <tr> onclick 执行与 :remote => true link 相同的 ajax

    css - 什么是 SCSS 等同于 LESS 的命名空间,类的捆绑

    css - 如何重构现有元素以使用 Compass?

    css - Sass:通过变量迭代链接选择器