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