estrutura do projeto ruby ??Ideal
-
03-07-2019 - |
Pergunta
Eu sou depois de uma visão geral / clarificação da estrutura do projeto ideal para um rubi (não-rails / merb / etc) projeto. Eu estou supondo que segue
app/
bin/ #Files for command-line execution
lib/
appname.rb
appname/ #Classes and so on
Rakefile #Running tests
README
test,spec,features/ #Whichever means of testing you go for
appname.gemspec #If it's a gem
eu tenho algo de errado? Que partes têm eu perdi?
Solução
Eu acho que é muito local. Por padrão, Rubygems irá adicionar o diretório lib ao loadpath, mas você pode empurrar qualquer diretório desejado para que o uso do $: variável. i.
$:.push File.expand_path(File.dirname(__FILE__) + '/../surfcompstuff')
Isso significa que quando você tem digamos, surfer.rb
em que dir, você pode require "surfer"
em qualquer lugar e o arquivo será encontrado.
Além disso, como uma convenção, classes e singletons obter um arquivo e módulos de obter um diretório. Por exemplo, se você tivesse o módulo LolCatz
ea classe LolCatz::Moar
que seria parecido com:
lib/
appname.rb
lolcatz/
moar.rb
É por isso que há uma lib / appname pasta porque a maioria das bibliotecas estão no namespace appname
.
Além disso, se você tentar executar o newgem --simple [projectname]
comando que vai gerar rapidamente um andaime para você com apenas o essencial para um projeto Ruby (e, por extensão, a Gema do rubi). Existem outras ferramentas que fazem isso, eu sei, mas newgem é bastante comum. I geralmente se livrar do arquivo TODO e todas as coisas do script.
Outras dicas
Veja o seguinte exemplo de http://guides.rubygems.org/what- é-a-gem /
% tree freewill
freewill/
├── bin/
│ └── freewill
├── lib/
│ └── freewill.rb
├── test/
│ └── test_freewill.rb
├── README
├── Rakefile
└── freewill.gemspec
I tentam imitar a estrutura do projeto Rails, porque minha equipe, que normalmente lida com Rails, vai entender a estrutura melhor do que outra configuração. Convenção sobre configuração -. Sangrando ao longo do Rails
Se você usar bundler, executar este bundle gem app_name
comando irá dar-lhe a mesma estrutura de diretório.
Se você quiser usar rspec em vez de testes de unidade pode então executar este rspec --init
comando
(Apenas certifique-se cd app_name
primeiro)