Sou desenvolvedor .NET e tive a chance de jogar com Ruby on Rails neste fim de semana.
No .NET, separamos as camadas do aplicativo criando projetos de bibliotecas de classes separados. Do ponto de vista do padrão de design, temos que fazer isso no Rails também ou é apenas um projeto inteiro com tudo?
design-patterns
.net
ruby-on-rails
Ryan Adriano
fonte
fonte
Respostas:
Você verá que os aplicativos Rails iniciam como repositórios únicos. Os mais bem-sucedidos (Twitter, Square, muitos outros) se dividem em várias bases de código à medida que crescem nesse requisito. Essas bases de código adicionais podem ser daemons , serviços , gemas, Rails Engines ou qualquer outra coisa.
Essa refatoração em vários projetos não é feita até que seja necessário, porque o YAGNI . A bifurcação do seu projeto no dia 1 diminui o tempo de prototipagem e a velocidade da prototipagem é um dos pontos fortes do Ruby e do Rails. Você deve ter em mente que criar ou uma classe no Ruby não custa quase nada, assim como desmembrar uma classe bem projetada. Seu código Ruby puro vai viver na maior parte sob
/app/
(app/models
,app/views
app/controllers
,app/helpers
) e/lib/
. Seus ativos estáticos, incluindo JS / Coffee em camadas e CSS / Sass / etc incluem/app/assets
.Entender por que separar uma classe Ruby é tão fácil requer um pouco de leitura sobre digitação de pato e o entendimento de que as interfaces do Ruby não são tão rígidas quanto você pode estar acostumado em um ambiente menos dinâmico.
Aqui estão alguns links que podem lhe interessar:
Breve descrição da digitação de patos ( blog de Yehuda Katz )
A inestimável Sandi Metz sobre como e por que projetar programas de OO simples de ler, entender e mudar ( podcast de Ruby Rogues em duas horas ) ( seu livro fantástico )
David Heinemeier Hansson, criador do Rails, no pipeline de ativos e nos problemas de layout de código que ele melhora ( vídeo principal da RailsConf )
Fazendo sua própria gema ( Rubygems.org HOWTO )
Boa sorte com seus projetos!
fonte
No Ruby, as bibliotecas são chamadas de gemas, consulte http://www.ruby-lang.org/en/libraries/ e são usadas da mesma maneira que as bibliotecas de classes .NET.
fonte