Je suis à la recherche d'un aperçu / clarification de la structure de projet idéale pour un projet ruby (non-rails / merb / etc). Je suppose que ça suit
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
Est-ce que je me trompe? Quelles parties ai-je manquées?
ruby
project-structure
dylanfm
la source
la source
Réponses:
Je pense que c'est à peu près parfait. Par défaut, Rubygems ajoutera le répertoire lib au loadpath, mais vous pouvez pousser n'importe quel répertoire de votre choix sur celui-ci en utilisant la variable $:. c'est à dire
Cela signifie que lorsque vous avez dit,
surfer.rb
dans ce répertoire, vous pouvezrequire "surfer"
n'importe où et le fichier sera trouvé.De plus, par convention, les classes et les singletons obtiennent un fichier et les modules un répertoire. Par exemple, si vous aviez le
LolCatz
module et laLolCatz::Moar
classe qui ressembleraient à:C'est pourquoi il existe un dossier lib / appname car la plupart des bibliothèques se trouvent dans l'
appname
espace de noms.De plus, si vous essayez d'exécuter la commande
newgem --simple [projectname]
qui générera rapidement un échafaudage pour vous avec juste l'essentiel pour un projet Ruby (et par extension un Ruby Gem). Il existe d'autres outils qui font cela, je sais, mais newgem est assez courant. Je me débarrasse généralement du fichier TODO et de tout le script.la source
lib
l'ajout automatique au chemin de chargement. Est-ce une chose 1.9? Une configuration spéciale est-elle nécessaire pour que cela se produise?bundle gem gem_name
Voir l'exemple suivant de http://guides.rubygems.org/what-is-a-gem/
la source
J'essaie d'imiter la structure du projet Rails parce que mon équipe, qui s'occupe généralement de Rails, comprendra la structure mieux qu'une autre configuration. Convention sur la configuration - saignement des rails.
la source
Si vous utilisez bundler, exécuter cette commande
bundle gem app_name
vous donnera la même structure de répertoires.Si vous souhaitez utiliser rspec au lieu de tests unitaires, vous pouvez ensuite exécuter cette commande
rspec --init
(assurez-vous simplement decd app_name
commencer)la source