[英]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__)
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.