Pregunta

Estoy escribiendo mi primer Rakefile. Lo primero que veo en el documento es "no hay un formato especial para un Rakefile" y "no hay una sintaxis especial en un Rakefile".

Bien, tuve que pensar en algo por mi cuenta, pero puedo ver al menos dos problemas con mi criatura:

1) Necesito crear varias carpetas, cinco de ellas. La secuencia de 6 tareas directory parece un poco extraña. La lista de 5 dependencias en la tarea deploy parece aún más extraña. ¿Puedo reducirlo a una línea de alguna manera?

2) Necesito repetir los literales de mi nombre de directorio dos veces: cuando defino sus rutas de implementación y cuando copio el contenido. ¿Puedo evitar eso sin introducir 5 variables más?

En Java Ant, crearía un archivo de propiedades con todos los nombres literales, ¿puedo hacer eso con Rake?

Esto es lo que tengo:

WEBAPPSDIR = '/var/webapps/'
WEBAPPNAME = 'foo.local'
WEBAPPDIR = File.join(WEBAPPSDIR, WEBAPPNAME)
VIEWSDIR = File.join(WEBAPPDIR, 'views')
PUBLICDIR = File.join(WEBAPPDIR, 'public')
CSSDIR = File.join(PUBLICDIR, 'css')
IMAGESDIR = File.join(PUBLICDIR, 'images')
TMPDIR = File.join(WEBAPPDIR, 'tmp')
HTMLDIR = File.join(PUBLICDIR, 'html')

directory VIEWSDIR
directory CSSDIR
directory HTMLDIR
directory IMAGESDIR
directory TMPDIR

desc 'Deploy to webapps dir'
task :deploy => [VIEWSDIR, CSSDIR, IMAGESDIR, TMPDIR, HTMLDIR] do
  cp 'config.ru', WEBAPPDIR
  Dir.glob('*.rb') {|f| cp f, WEBAPPDIR}
  Dir.glob('views/*.{mab,str}') {|f| cp f, VIEWSDIR}
  Dir.glob('css/*.css') {|f| cp f, CSSDIR}
  Dir.glob('images/*.{png,jpg,gif}') {|f| cp f, IMAGESDIR}
  Dir.glob('html/*.html') {|f| cp f, VIEWSDIR}
end

desc 'Cleans webapp dir'
task :clean do
  rm_r WEBAPPDIR, {force: true}
end

También son bienvenidos otros pensamientos / enlaces / ejemplos.

¿Fue útil?

Solución

Esto no responde realmente a su pregunta, pero ¿por qué no usa capistrano?Si aún no lo sabe, es una herramienta ruby que se usa con frecuencia para manejar implementaciones sin problemas

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top