【问题标题】:How to override sprockets paths in rails?如何覆盖导轨中的链轮路径?
【发布时间】:2012-09-14 04:51:43
【问题描述】:

我正在尝试覆盖 Sprockets 在 Rails 中生成的路径,特别是对于 sass 助手。

我已经使用各种解决方案到达了某个地方:

a) 覆盖视图中的 image_tag 助手

b) 覆盖 ActionView::AssetPaths 计算函数

c) 在 Sass::Script::Functions 中包含新模块

但感觉应该有比做这一切更简单的方法。有没有什么好方法 装饰链轮路径?我这样做是因为我们有一些自定义 url 和包装的东西正在发生。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1 asset-pipeline sprockets


    【解决方案1】:

    所以,最后我发现这条消息隐藏在 sprockets/context.rb 中

    Custom asset_path helper is not implemented
    Extend your environment context with a custom method.
    
    environment.context_class.class_eval do
      def asset_path(path, options = {})
      end
    end
    

    这似乎表明 Rails.application.assets.context_class.class_eval 会 允许我更改asset_path 处理程序,但它似乎没有用。我不确定这是否是我的错,因为我找不到任何这样的例子。

    目前我的破解方法是这样的:

      ActionView::AssetPaths.class_eval do
        def compute_public_path(source, dir, options = {})
          my_transform(source)
        end
      end
    
      Sprockets::Helpers::RailsHelper::AssetPaths.class_eval do
        def compute_public_path(source, dir, options = {})
          my_transform(source)
        end
      end
    
      ActionView::Helpers::AssetTagHelper::AssetPaths.class_eval do
        def compute_public_path(source, dir, options = {})
          my_transform(source)
        end
      end
    

    我怀疑我不需要所有这三个,但我不确定。有谁知道他们的链轮想对此发表评论吗?

    【讨论】:

      猜你喜欢
      • 2012-05-11
      • 2012-02-06
      • 2014-09-13
      • 2017-05-28
      • 2013-02-27
      • 2011-05-07
      • 2020-04-18
      • 2019-08-04
      相关资源
      最近更新 更多