簡體   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