Usando switchtower en un hosting “compartido”
Publicado por Edgar González 31 Enero 2006 en Rails, linux, subversion, switchtower. english • españolEl estándar de facto actual para hacer deployments de aplicaciones basadas en RubyOnRails es utilizar switchtower.
Switchtower sigue (al igual que RubyOnRails) el patrón DRY (don't repeat yourself), por lo tanto hace una serie de consideraciones sobre donde y como se hará el deployment, sin embargo muchas de estas consideraciones pueden ser cambiadas.
Una vez que configuré el repositorio subversion en mi host compartido, me puse a configurar switchtower para hacer los deployment hacia mi host compartido.
Switchtower se configura en el archivo /config/deploy.rb, asignándole valor a varias variables, en particular existe la variable :repository, la cual contiene la localización del repositorio (en mi caso subversion) que almacena el código de mi aplicación. Switchtower usa esta variable para acceder al repositorio subversion tanto desde la máquina de desarrollo desde la cual se corre el deployment, como desde el host hacia el cual se quiere hacer el deployment (para hacer el checkout en cuestion de los fuentes).
El acceso a mi repositorio subversion desde mi ambiente de desarrollo es vía svn+ssh://, por ejemplo:
svn+ssh://[mi usuario]@[mi dominio]/home/[mi usuario]/repo/[mi aplicacion]/trunk/
Pero (en mi caso en particular) mi proveedor de hosting no soporta (o al menos no de manera directa) que desde el servidor pueda acceder al repositorio subversion localizado en el mismo servidor vía svn+ssh://, es decir que no puedo usar el mismo url que uso desde mi máquina de desarrollo para acceder al repositorio subversion desde el hosting. El url para accederlo sería del tipo:
file:///home/rubycorn/repo/rubycorner/trunk
Por lo tanto tuve que modificar switchtower para tratar con esta situación, para ello modifiqué el /config/deploy.rb creando una nueva variable :repository_from_dev la cual será usada por switchtower para acceder al repositorio subversion desde mi máquina de desarrollo, mientras que la variable repository será usada para acceder al repositorio subversion desde el host al que se quiere hacer deployment. El extracto en cuestion del /config/deploy.rb quedó de esta forma:
-
set :application, "mi aplicacion"
-
set :repository, "file:///home/[mi usuario]/repo/[mi aplicacion]/trunk"
-
set :repository_from_dev, "svn+ssh://[mi usuario]@[mi dominio]/home/[mi usuario]/repo/[mi aplicacion]/trunk/"
Luego altero el comportamiento de switchtower, agregándole al archivo /lib/tasks/switchtower.rake las siguientes líneas:
-
# =======================================================
-
# Extension para hacer deploy a mi hosting
-
# =======================================================
-
require 'switchtower/scm/subversion'
-
-
module SwitchTower
-
module SCM
-
class Subversion
-
def latest_revision
-
configuration.logger.debug "querying latest revision..." unless @latest_revision
-
#repo = configuration.repository
-
repo = configuration.repository_from_dev
-
puts "usando repository_from_dev: #{repo}"
-
until @latest_revision
-
match = svn_log(repo).scan(/r(\d+)/).first
-
@latest_revision = match ? match.first : nil
-
if @latest_revision.nil?
-
# if a revision number was not reported, move up a level in the path
-
# and try again.
-
repo = File.dirname(repo)
-
end
-
end
-
@latest_revision
-
end
-
end
-
end
-
end
Con esto el rake deploy funcionó perfecto. Ya probaré los otros tasks de switchtower a ver que tal.
0 Respuestas a “Usando switchtower en un hosting “compartido””
Por favor Espera
Añade un Comentario