Пересмотр вопроса (после и благодаря Гэвину Миллеру)
Если есть три вида расширений ядра (или патчи обезьян), как в следующих примерах:
1- a Builer Form
class FormWithBuilder < ActionView::Helpers::FormBuilder
def object
# ... my code
end
end
2- расширение ядра класса
class Hash
def translate_values
th=Hash.new
self.each{|k,v| th[k]=I18n.translate(v)}
th
end
end
3- Помощник по формам
module ActionView
module Helpers
module TranslationHelper
alias_method :original_localize, :localize
def localize(*args)
....
end
end
end
end
куда мне поместить эти файлы?
После ответа Гэвина Миллера я понимаю, что должен использовать правильную структуру папок, как расширение ядра Rails и так далее.И не хавиги их под config/initializers
, это было там, где я был раньше (и работал).Хорошо, давайте создадим папки и поместим их в lib /...
и с нетерпением ждем Я понял, что использование config.eager_load_paths и config.autoload_paths - плохая практика:
https://edgeguides.rubyonrails.org/autoloading_and_reloading_constants.html#autoload-paths-and-eager-load-paths
https://github.com/rails/rails/issues/13142
и рекомендует поместить всю эту папку lib/core_extensions
, которую мне сказал Гэвин Миллер, в папку app/lib/
и ничего больше, кроме этойРешение не работает для меня, если я require
все файлы, но это, как я понимаю, не нужно, потому что все внутри app
загружается автоматически.
Я думаю, что мне не хватает какой-то конфигурации
Это на изображениях, проще объяснить

rails c
Running via Spring preloader in process 9724
Loading development environment (Rails 5.1.5)
2.4.0 :001 > Hash.new.translate_values
NoMethodError: undefined method `translate_values' for {}:Hash
после того, как требуется:
2.4.0 :015 > require Rails.root.join('app','lib','core_extensions','hash','localization.rb')
=> true
2.4.0 :016 > Hash.new.translate_values
=> {}
Спасибо
---- Отредактировано 27/10
IS это плохое решение?Просто создайте файл под config/initilizers/core_extensions.rb
и
Dir.glob(Rails.root.join('lib/core_extensions/**/*.rb')).sort.each do |filename|
require filename
end
таким образом, мне не нужно изменять ни config.autoload_paths, ни eager_load_paths