ruby - trabajo - flujo de caja pdf
Diseño de directorio para el proyecto puro de Ruby (7)
¿Por qué no usar solo el mismo diseño? Normalmente no necesitarás construir porque no hay un paso de compilación, pero el resto me parece bien.
No estoy seguro de lo que quiere decir con un módulo, pero si se trata de una sola clase, no sería necesaria una carpeta separada y si hay más de un archivo normalmente se escribe un archivo módulo-1.rb (en el nivel de nombre como carpeta module-1) que no hace más que requerir todo en el módulo-1 /.
Ah, y sugeriría usar Rake para las tareas de administración (en lugar de make).
Estoy empezando a aprender ruby. También soy un desarrollador diario de C ++. Para los proyectos de C ++ generalmente voy con la siguiente estructura dir
/
-/bin <- built binaries
-/build <- build time temporary object (eg. .obj, cmake intermediates)
-/doc <- manuals and/or Doxygen docs
-/src
--/module-1
--/module-2
-- non module specific sources, like main.cpp
- IDE project files (.sln), etc.
¿Qué diseño de directorio para Ruby (no rieles, no Merb) sugeriría para mantenerlo limpio, simple y fácil de mantener?
@ Dentharg : su "incluir uno para incluir todas las subpartes " es un patrón común. Al igual que cualquier otra cosa, tiene sus ventajas (es fácil obtener las cosas que quiere) y sus desventajas (los muchos incluyen pueden contaminar espacios de nombres y usted no tiene control sobre ellos). Tu patrón se ve así:
- src/
some_ruby_file.rb:
require ''spider''
Spider.do_something
+ doc/
- lib/
- spider/
spider.rb:
$: << File.expand_path(File.dirname(__FILE__))
module Spider
# anything that needs to be done before including submodules
end
require ''spider/some_helper''
require ''spider/some/other_helper''
...
Podría recomendar esto para permitir un poco más de control:
- src/
some_ruby_file.rb:
require ''spider''
Spider.include_all
Spider.do_something
+ doc/
- lib
- spider/
spider.rb:
$: << File.expand_path(File.dirname(__FILE__))
module Spider
def self.include_all
require ''spider/some_helper''
require ''spider/some/other_helper''
...
end
end
A partir de 2011, es común utilizar joyero en lugar de newgem, ya que este último está efectivamente abandonado.
Así que fui con newgem. Eliminé todo lo innecesario de RubyForge / gema (azada, configuración, etc.), creé el repositorio git, proyecto importado en NetBeans. Todo tomó 20 minutos y todo está en verde. Eso incluso me dio una tarea básica de rake para archivos de especificaciones.
Gracias a todos.
La estructura central de un proyecto estándar de Ruby es básicamente:
lib/
foo.rb
foo/
share/
foo/
test/
helper.rb
test_foo.rb
HISTORY.md (or CHANGELOG.md)
LICENSE.txt
README.md
foo.gemspec
El share/
es raro y a veces se denomina data/
lugar. Es para archivos de uso general que no sean de rubí. La mayoría de los proyectos no lo necesitan, pero incluso cuando lo hacen muchas veces, todo se guarda en lib/
, aunque probablemente esta no sea la mejor práctica.
El directorio de test/
puede llamarse spec/
si se usa BDD en lugar de TDD, aunque también puede ver las features/
si se usa Cucumber, o demo/
si se usa QED.
foo.gemspec
, foo.gemspec
solo puede ser .gemspec
especialmente si no se actualiza manualmente.
Si su proyecto tiene ejecutables de línea de comando, agregue:
bin/
foo
man/
foo.1
foo.1.md or foo.1.ronn
Además, la mayoría de los proyectos de Ruby tienen:
Gemfile
Rakefile
El Gemfile
es para usar Bundler, y el Rakefile
es para la herramienta de compilación Rake. Pero hay otras opciones si desea usar diferentes herramientas.
Algunos otros archivos no tan poco comunes:
VERSION
MANIFEST
El archivo VERSION
solo contiene el número de versión actual. Y MANIFEST
(o Manifest.txt
) contiene una lista de archivos que se incluirán en los archivos del paquete del proyecto (por ejemplo, paquete de gemas).
Qué más puedes ver, pero el uso es esporádico:
config/
doc/ (or docs/)
script/
log/
pkg/
task/ (or tasks/)
vendor/
web/ (or site/)
Donde config/
contiene varios archivos de configuración; doc/
contiene la documentación generada, por ejemplo, RDoc, o en ocasiones la documentación mantenida manualmente; script/
contiene scripts de shell para uso del proyecto; log/
contener registros de proyectos generados, por ejemplo, informes de cobertura de pruebas; pkg/
contiene archivos de paquete generados, por ejemplo, foo-1.0.0.gem
; task/
podría contener varios archivos de tareas como foo.rake
o foo.watchr
; vendor/
contiene copias de los otros proyectos, por ejemplo, submódulos de git; y finalmente web/
contiene los archivos del sitio web del proyecto.
Luego algunos archivos específicos de la herramienta que también son relativamente comunes:
.document
.gitignore
.yardopts
.travis.yml
Son bastante auto explicativos.
Finalmente, .index
que personalmente .index
un archivo .index
y un directorio var/
para compilar ese archivo (busque "Indizador de Rubyworks" para obtener más información al respecto) y con frecuencia tengo un directorio de work
, algo así como:
work/
NOTES.md
consider/
reference/
sandbox/
Solo una especie de depósito de chatarra para fines de desarrollo.
Me limitaría a algo similar a lo que está familiarizado: no tiene sentido ser un extraño en su propio directorio de proyectos. :-)
Las cosas típicas que siempre tengo son lib | src, bin, test.
(No me gustan estos generadores de monstruos: lo primero que quiero hacer con un nuevo proyecto es bajar un código, ¡no escribir un README, documentos, etc.!)
Puede instalar la nueva gema RubyGem y dejar que genere el diseño para usted.
$ gem install newgem
$ newgem spider
create
create config
create doc
create lib
create script
create tasks
create lib/spider
create History.txt
create License.txt
create Rakefile
create README.txt
create PostInstall.txt
create setup.rb
create lib/spider.rb
create lib/spider/version.rb
create config/hoe.rb
create config/requirements.rb
create tasks/deployment.rake
create tasks/environment.rake
create tasks/website.rake
dependency install_test_unit
create test
create test/test_helper.rb
create test/test_spider.rb
dependency install_website
create website/javascripts
create website/stylesheets
exists script
exists tasks
create website/index.txt
create website/index.html
create script/txt2html
force tasks/website.rake
dependency plain_theme
exists website/javascripts
exists website/stylesheets
create website/template.html.erb
create website/stylesheets/screen.css
create website/javascripts/rounded_corners_lite.inc.js
dependency install_rubigen_scripts
exists script
create script/generate
create script/destroy
create script/console
create Manifest.txt
readme readme
Important
=========
* Open config/hoe.rb
* Update missing details (gem description, dependent gems, etc.)
Luego, en lib /, crea módulos según sea necesario:
lib/
spider/
base.rb
crawler/
base.rb
spider.rb
require "spider/base"
require "crawler/base"