Где лучшее место для расширения функциональности встроенных классов в Rails? - PullRequest
4 голосов
/ 28 июня 2010

У меня есть несколько методов, которые я добавляю в класс Array Ruby для моего приложения на Rails. Где лучше всего их разместить?

Прямо сейчас у меня они есть в config / environment.rb.

Ответы [ 2 ]

7 голосов
/ 28 июня 2010

config / environment.rb на самом деле не лучшее место, так как вы можете столкнуться с серьезными проблемами упорядочения загрузки, если попытаетесь расширить классы, которые не были решены во время выполнения environment.rb.

Лучше поместить файл в конфиг / инициализаторы.Любой размещенный там скрипт будет выполнен после загрузки среды выполнения rails.

Что вы можете сделать, это создать файл lib / my_extensions.rb

module MyExtensions
end

, затем в массиве lib / my_extensions /.rb:

module MyExtensions::Array 
  def join_with_commas
    join(", ")
  end
end

и в config / initializers / load_my_extensions.rb

class Array
  include MyExtensions::Array
end

Это приведет к автоматической перезагрузке MyExtensions :: Array каждый раз, когда вы вызываете запрос в разработкеРежим.Это лучше, чем перезапускать ваше приложение каждый раз, когда вы вносите изменения в код.

1 голос
/ 28 июня 2010

Возможно, было бы лучше добавить каталог lib/ со всеми вашими расширениями. Затем добавьте строку в config / environment.rb, которая загружает файл:

require File.join(RAILS_ROOT, 'lib', 'array.rb')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...