gpt4 book ai didi

ruby-on-rails - rails 3.1 Assets 管道 : ignore assets from a gem

转载 作者:行者123 更新时间:2023-12-03 22:39:44 24 4
gpt4 key购买 nike

我不太确定实际行为是什么,所以我的第一个问题是:
是否总是编译来自 gem(在我的情况下为 Spree)中的 Assets (例如 javascripts)?我不使用 Spree 的 javascripts,因此不希望它们被编译。我的 application.js 中不需要它们或任何其他 javascript 文件,但是

rake assets:precompile

仍然编译它们。我只是不想让他们躺在我的 public/assets文件夹。

所以我想我的问题是,有没有办法禁用从 gem 编译 javascripts?

最佳答案

rails 4.X
它在 Rails 4.X 上不起作用,一个可能的(肮脏的)解决方法是:

require 'sprockets/railtie'

Bundler.require(:default, Rails.env)

module Sprockets
module Paths
SKIP_GEMS = ["rails-assets-jquery", "rails-assets-bootstrap"]

def append_path_with_rails_assets(path)
append_path_without_rails_assets(path) unless SKIP_GEMS.any? { |gem| path.to_s.start_with?(Gem.loaded_specs[gem].full_gem_path) }
end

alias_method_chain :append_path, :rails_assets
end
end
Rails 5.X 更新 alias_method_chain自 Rails 5.X 起已弃用。这是使用 prepend 的更新版本, 并覆盖 Sprockets::Environment模块而不是 Sprockets::Paths .
module SprocketsPathsOverride
SKIP_GEMS = ["rails-assets-jquery", "rails-assets-bootstrap"]

def append_path(path)
should_skip = SKIP_GEMS.any? do |gem|
path.to_s.start_with?(Gem.loaded_specs[gem].full_gem_path)
end
super(path) unless should_skip
end
end

Sprockets::Environment.prepend(SprocketsPathsOverride)

关于ruby-on-rails - rails 3.1 Assets 管道 : ignore assets from a gem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7163264/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com