В Ruby on Rails, чтобы расширить класс String, где должен быть введен код?


Если на Ruby on Rails, мне нужно добавить метод с именем

class String
  def capitalize_first
    # ...
  end
end

и интересно, куда должен идти файл? (какой каталог и имя файла и требуется ли какой-либо код инициализации?) Это для проекта Rails 3.0.6.

3 68

3 ответа:

Я всегда добавляю в своем 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

вы можете сделать это в config/initializers/string.РБ

class String
  def capitalize_first
    # ...
  end
end

должно быть все, что вам нужно (кроме перезагрузки приложения).

руководящие принципы в Rails 3.1 путь:

http://guides.rubyonrails.org/plugins.html#extending-core-classes

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