134 votes

Idéal ruby structure de projet

Je suis après un aperçu/clarification de l'idéal de la structure de projet pour un ruby (non-rails/merb/etc). J'imagine qu'il suit le long des lignes de:

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

J'ai obtenu quelque chose de mal? Quelles pièces que j'ai raté?

95voto

Chris Lloyd Points 5346

Je pense que c'est à peu près sur place. Par défaut, Rubygems va ajouter le répertoire lib de l'loadpath, mais vous pouvez appuyer sur n'importe quel répertoire vous voulez sur que l'utilisation de l' $: variable. c'est à dire

$:.push File.expand_path(File.dirname(__FILE__) + '/../surfcompstuff')

Cela signifie que lorsque vous avez la parole, surfer.rb en que dir, vous pouvez require "surfer" n'importe où et le fichier sera trouvé.

Aussi, en tant que convention, les classes et les singletons obtenir un fichier et les modules d'obtenir un répertoire. Par exemple, si vous avez eu l' LolCatz module et l' LolCatz::Moar de la classe qui pourrait ressembler à:

lib/
  appname.rb
  lolcatz/
    moar.rb

C'est pourquoi il y a une lib/appname dossier, car la plupart des bibliothèques sont dans l' appname d'espace de noms.

En outre, si vous essayez d'exécuter la commande newgem --simple [projectname] qui va générer rapidement un échafaudage pour vous avec juste l'essentiel pour un Rubis projet (et, par extension, un Ruby Gem). Il y a d'autres outils qui ne sont, je le sais, mais newgem est assez commun. J'ai l'habitude de me débarrasser du fichier TODO et tout le script de trucs.

12voto

Sam Shiles Points 3254

Voir l'exemple suivant http://guides.rubygems.org/what-is-a-gem/

 % tree freewill
    freewill/
    ├── bin/
    │   └── freewill
    ├── lib/
    │   └── freewill.rb
    ├── test/
    │   └── test_freewill.rb
    ├── README
    ├── Rakefile
    └── freewill.gemspec

6voto

berlin.ab Points 341

J'ai tenter d'imiter les Rails de projet de la structure parce que mon équipe, qui traite généralement avec les Rails de, permettra de comprendre la structure de mieux qu'une autre configuration. Convention over Configuration des saignements de plus de Rails.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X