В Ruby on Rails, чтобы расширить класс String, где должен быть введен код?
Если на Ruby on Rails мне нужно добавить метод под названием
class String
def capitalize_first
# ...
end
end
и задаться вопросом, куда должен идти файл? (какой каталог и имя файла, и какой-либо код инициализации нужен?) Это для проекта Rails 3.0.6.
Ответы
Ответ 1
Я всегда добавляю каталог core_ext
в мою директорию lib
.
Создайте инициализатор для загрузки пользовательских расширений (например: config/initializers/core_exts.rb
). И добавьте в него следующую строку:
Dir[File.join(Rails.root, "lib", "core_ext", "*.rb")].each {|l| require l }
и иметь ваше расширение как:
lib/core_ext/string.rb
class String
def capitalize_first
# ...
end
end
Ответ 2
Вы можете сделать это в config/initializers/string.rb
class String
def capitalize_first
# ...
end
end
должно быть все, что вам нужно (помимо перезапуска приложения).
Ответ 3
Руководства в Rails 3.1 - это путь:
http://guides.rubyonrails.org/plugins.html#extending-core-classes
Если вы следуете стандарту по умолчанию, вам не нужно будет путаться с конфигурацией инициализатора.