簡體   English   中英

如何不需要“rails/all”?

[英]How to not require "rails/all"?

> CUT_OFF=10 bundle exec derailed bundle:mem
TOP: 129.6563 MiB
  rails/all: 58.1406 MiB
    action_mailbox/engine: 32.1719 MiB

我不想要求 action_mailbox/engine 但 rails/all 需要它

我不確定它是哪個寶石。

我試過了:

def require(file)
  puts "#{file} => #{caller.first}"
  super
end

但是沒有任何顯示

奇怪的是,僅僅通過查看Gemfile rails/all就可以以某種方式加載。 有時只是搜索幫助:

$ ag "rails/all" `bundle show --paths`
/home/alex/.rbenv/versions/3.1.2/lib/ruby/gems/3.1.0/gems/derailed_benchmarks-2.1.2/bin/derailed
90:          require 'rails/all'

# ... 2 more results from `.tt` files

要回答您的問題,您可以拆分rails gem 並使用您需要的東西。 我之前回答過:
https://stackoverflow.com/a/71993557/207090

現在在config/application.rb中你可以替換:

require "rails/all"

使用railties gem 中的all.rb中的 require 並刪除不需要的內容:
https://github.com/rails/rails/blob/v7.0.4/railties/lib/rails/all.rb

你真的不必這樣做,因為丟失的文件會被挽救,應用程序將毫無問題地啟動。 必須刪除郵箱的任何引用/配置。

# config/application.rb

# require "rails/all"
require "rails"
%w(
  active_record/railtie
  active_storage/engine
  action_controller/railtie
  action_view/railtie
  active_job/railtie
  action_cable/engine
  action_text/engine
  rails/test_unit/railtie
).each do |railtie|
  # action_mailer/railtie
  # action_mailbox/engine
  begin
    require railtie
  rescue LoadError
  end
end       

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM