Я новичок в ROR и пытаюсь преобразовать свое приложение PhP в приложение ROR. Есть один php-файл common.php, который включен почти во все остальные файлы. Аналогичным образом common.php, в свою очередь, использует RPCClient.php и User.php. Переменные и методы являются общими для всех файлов php. Итак, что мне следует использовать в ROR-классе или модуле, поскольку данные распределяются между различными файлами.
Это не дубликат номинированного образца, хотя этот вопрос действительно имеет некоторую актуальность, поскольку решение проблемы OP будет использовать «требовать» и «включать».






В Ruby вы захотите организовать вещи в пространствах имен, и лучший способ сделать это - через объявления классов и модулей.
Обычно class - это то, что вы сделать пример, а module - это то, что либо «смешано» (например, набор методов, импортированных другими модулями или классами), либо используется напрямую.
Например:
class User < ActiveRecord::Base
end
Здесь Users - это класс, потому что вы - пользователи Создайте, и каждый пользователь представлен объектом.
Вы также можете объявить методы как «миксины» или включаемые модули:
module UserPermissions
def can_delete_post?(post)
post.user_id == self.id
end
end
class User < ActiveRecord::Base
include UserPermissions
end
Где теперь user.can_delete_post? - допустимый метод, и этот метод выполняется в контексте данного пользовательского экземпляра.
Вы также можете создавать модули, которые представляют собой просто наборы методов, которые вы можете вызывать напрямую:
module AppConfig
def self.account_limit
1
end
end
AppConfig.account_limit
# => 1
Где вы можете вызвать этот метод напрямую, не обращаясь к нему через include. Это тоже довольно распространенный шаблон, это просто пространство имен организации.
Как и во многих объектно-ориентированных языках, особенно в языках, производных от Болтовня, вы захотите прочитать объектно-ориентированные шаблоны проектирования, чтобы увидеть, как правильно структурировать вещи.
Возможный дубликат В чем разница между include и require в Ruby?