Как обезопасить патч Array в подпапке Rails lib? - PullRequest
0 голосов
/ 03 июля 2018

У меня есть стандартное приложение на Rails 5.2, и я хотел бы добавить метод к классу Array.

Итак, я создал файл в lib/core_extensions/array/use_slugs.rb с этим кодом:

module CoreExtensions
  module Array
    def use_slugs
      binding.pry
    end
  end
end

Array.include CoreExtensions::Array

и в моем config/application.rb файле я добавил:

class Application < Rails::Application
  ...
  config.eager_load_paths << Rails.root.join('lib')
  config.eager_load_paths << Rails.root.join('lib', 'core_extensions', '**/')
  ...
end

Но все же, когда я звоню [].use_slugs, я получаю undefined method 'use_slugs' for []:Array

Почему?

Спасибо

1 Ответ

0 голосов
/ 04 июля 2018

Хорошо, для кого-то еще. Я решил вообще не загружать всю папку lib в файл application.rb, потому что обычно вы не хотите загружать все грабли и т. Д. (Поэтому я удалил строки config.eager_load_paths << Rails.root.join('lib') и config.eager_load_paths << Rails.root.join('lib', 'core_extensions', '**/') из application.rb)

Я сохранил структуру папок в папке lib, но загружаю только определенные файлы и подпапки lib в созданном мной файле config/initializers/lib_init.rb, например:

require Rails.root.join('lib', 'sp_form_builder.rb')
Dir[ Rails.root.join('lib', 'core_extensions', '**') ].each { |f| require f }
...