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?

Foi útil?

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)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top