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?

È stato utile?

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)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top