Struttura ideale del progetto rubino
-
03-07-2019 - |
Domanda
Sto cercando una panoramica / chiarimento della struttura ideale del progetto per un progetto ruby ??(non-rails / merb / etc). Immagino che segua
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
Ho sbagliato qualcosa? Quali parti mi sono perso?
Soluzione
Penso che sia praticamente perfetto. Per impostazione predefinita, Rubygems aggiungerà la directory lib al percorso di caricamento, ma puoi spingere qualsiasi directory che desideri su quella usando la variabile $ :. cioè.
$:.push File.expand_path(File.dirname(__FILE__) + '/../surfcompstuff')
Ciò significa che quando hai detto surfer.rb
in quella directory, puoi richiedere " surfer "
ovunque e il file sarà trovato.
Inoltre, come convenzione, le classi e i singoli ottengono un file e i moduli ottengono una directory. Ad esempio, se avessi il modulo LolCatz
e la classe LolCatz :: Moar
che sarebbe simile a:
lib/
appname.rb
lolcatz/
moar.rb
Ecco perché esiste una cartella lib / appname perché la maggior parte delle librerie si trova nello spazio dei nomi appname
.
Inoltre, se provi a eseguire il comando newgem --simple [nome progetto]
che genererà rapidamente uno scaffold per te con solo gli elementi essenziali nudi per un progetto Ruby (e per estensione una gemma Ruby ). Ci sono altri strumenti che lo fanno, lo so, ma newgem è piuttosto comune. Di solito mi sbarazzo del file TODO e di tutto il materiale dello script.
Altri suggerimenti
Vedi l'esempio seguente da http://guides.rubygems.org/what- is-a-gem /
% tree freewill
freewill/
├── bin/
│ └── freewill
├── lib/
│ └── freewill.rb
├── test/
│ └── test_freewill.rb
├── README
├── Rakefile
└── freewill.gemspec
Cerco di imitare la struttura del progetto Rails perché il mio team, che di solito si occupa di Rails, capirà la struttura meglio di un'altra configurazione. Convenzione sulla configurazione - bleeding da Rails.
Se usi il bundler, eseguendo questo comando bundle gem app_name
otterrai la stessa struttura di directory.
Se si desidera utilizzare rspec invece di unit test, è possibile eseguire questo comando rspec --init
(Assicurati solo di cd app_name
prima)