繁体   English   中英

在 Rails 应用程序中更改 gem 文件

[英]Change gem files in rails application

我有一个 Rails 应用程序,我在 gemfile 中添加了一个开源 gem。 根据我的要求,gem 中的大部分代码都可以正常工作,但我需要对 gem 代码进行一些更改以使其更有用。

我没有在 lib 中包含 gem 代码,因为这意味着维护的代码比需要的多。

如何在包含 gem 的同时重写一些替换 gem 代码的代码(仅适用于某些文件)?

我只是猴子修补宝石,然后将这些修补程序放入$RAILS_ROOT/lib/patches/ ,然后在config/boot.rb要求它们:

ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)

require 'bundler/setup' # Set up gems listed in the Gemfile.

# Apply patches
Dir[File.expand_path('../../lib/patches/*.rb', __FILE__)].each {|f| require f}

您可以为您的应用程序更改 Gemfile 并同时需要带有补丁的 gem

例如如何修补 json 1.8.6 以抑制 ruby 2.7.x 的警告

宝石文件

gem 'json', require: File.expand_path('lib/monkey_patches/json.rb', __FILE__)

lib/monkey_patch/json.rb

require 'json'

module JSON
  module_function

  def parse(source, opts = {})
    Parser.new(source, **opts).parse
  end
end

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM