anothermh поделился ссылкой выше (и, к сведению, удивительно, что их фотография профиля изображает Робокопа, когда этот вопрос касается Рубокопа) ... но вот что рекомендации Rubocop для классов предложить:
class Person
# extend and include go first
extend SomeModule
include AnotherModule
# inner classes
CustomError = Class.new(StandardError)
# constants are next
SOME_CONSTANT = 20
# afterwards we have attribute macros
attr_reader :name
# followed by other macros (if any)
validates :name
# public class methods are next in line
def self.some_method
end
# initialization goes between class methods and other instance methods
def initialize
end
# followed by other public instance methods
def some_method
end
# protected and private methods are grouped near the end
protected
def some_protected_method
end
private
def some_private_method
end
end
Как личное примечание: хотя постоянный стиль делает чтение кода быстрее и проще, а другим сканировать то, что вы написали, имейте в виду, что это всего лишь рекомендации «лучших практик». В конце дня все, что работает лучше всего для ВАС, должно быть вашей новой лучшей практикой.