Я разработчик .NET, и у меня была возможность поиграть с Ruby on Rails в эти выходные.
В .NET мы разделяем слои приложения, создавая отдельные проекты библиотеки классов. С точки зрения шаблонов проектирования, мы должны делать это и в Rails, или это всего лишь один проект со всем в нем?
design-patterns
.net
ruby-on-rails
Райан Адриано
источник
источник
Ответы:
Вы обнаружите, что приложения Rails начинаются как отдельные репозитории. Более успешные (Twitter, Square и многие другие) разделяются на несколько кодовых баз по мере того, как они удовлетворяют этому требованию. Такими дополнительными кодовыми базами могут быть демоны , сервисы , гемы, Rails Engines или что-то еще.
Этот рефакторинг на несколько проектов не будет выполнен, пока не окажется необходимым, потому что YAGNI . Раздвоение вашего проекта в первый день замедляет время создания прототипов, а скорость создания прототипов является ключевым преимуществом Ruby и Rails. Вы должны иметь в виду, что создание класса или класса в Ruby почти ничего не стоит, равно как и разделение хорошо продуманного класса. Ваш чистый рубин код будет жить в основном под
/app/
(app/models
,app/views
app/controllers
,app/helpers
) и/lib/
. Ваши статические активы, многоуровневые JS / Coffee и CSS / Sass / и другие будут включены/app/assets
.Понимание того, почему разделение класса Ruby так просто, требует некоторого прочтения по типу утки и понимания того, что интерфейсы Ruby не так железны, как вы могли бы привыкнуть в менее динамичной среде.
Вот несколько ссылок, которые могут вас заинтересовать:
Краткое описание типизации утки ( пост Иегуды Каца )
Бесценный Сэнди Мец о том, как и зачем разрабатывать ОО программы, которые легко читать, понимать и изменять ( 2-часовой подкаст Ruby Rogues ) ( Ее фантастическая книга )
Создатель Rails Дэвид Хайнмайер Ханссон (David Heinemeier Hansson) о конвейере ресурсов и проблемах с компоновкой кода, которые улучшаются ( видео с RailsConf )
Создание собственного драгоценного камня ( Rubygems.org HOWTO )
Удачи в ваших проектах!
источник
В Ruby библиотеки называются гемами, см. Http://www.ruby-lang.org/en/libraries/ и используются так же, как библиотеки классов .NET.
источник