Tarea para Rake: Ruby on Rails en Aptana
Publicado por blaxter - 06 Dic 2007 a las 19:25Aptana es un IDE basado en Eclipse, el proyecto RadRails que pretende facilitar el desarrollo de aplicaciones con Ruby on Rails desde Eclipse se encuentra ahora dentro Aptana. Un problema típico puede ser que ya tenías tu proyecto empezado e intentas usarlo desde Aptana. Según cómo hayas creado tu aplicación puede llegar a traducirse a un cuelgue de Aptana debido a que no detecta bien el bucle infinito de enlaces simbólicos que se crea dentro del subdirectorio vendor cuando se crea la aplicación con un típico rails [nombre de la aplicación] (al menos si has usado los paquetes de ubuntu, incorrecta forma de instalar rails, por cierto).
Historias y rayadas aparte, si quieres importar tu proyecto de ruby on rails a Aptana/Eclipse, algo así como el típico mvn eclipse:eclipse de maven en el mundo Java, he hecho una tarea para rake, para realizar este proceso. Creará los ficheros necesarios para poder importar luego el proyecto desde Aptana, y eliminará los enlaces simbólicos malignos que he comentado en el anterior parrafo en caso de que existiesen.
Simplemente descargamos el fichero y lo colocamos en lib/tasks, y ejecutamos rake aptana:aptana. Esto nos creará en el raíz de nuestro proyecto dos ficheros, .loadpath y .project, que harán que nuestro proyecto pueda ser importado en Aptana (File, import, Existing projects..., y tal).
RAILS_APPDIR = RAILS_ROOT.sub("/config/..","")
LIBS = %w{rails activerecord actionmailer actionpack
actionwebservice activesupport}
def project_name
Pathname.new(RAILS_APPDIR).basename.to_s
end
def project_file(name)
<<END
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>#{name}</name>
<comment>Project #{name} with ruby on rails</comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.rubypeople.rdt.core.rubybuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.rubypeople.rdt.core.rubynature</nature>
<nature>org.radrails.rails.core.railsnature</nature>
</natures>
</projectDescription>
END
end
def loadpath_file(excludes, libs)
content = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<loadpath>\n"
content << "\t<pathentry "
content << "excluding=\"" << excludes.join('|') << '" '
content << 'path="" type="src"/>'
content << "\n\t"
content << '<pathentry path="org.rubypeople.rdt.launching.RUBY_CONTAINER" type="con" />'
content << "\n"
pathentry = proc {|l| "\t<pathentry path=\"GEM_LIB/#{l}/lib\" type=\"var\"/>\n"}
libs.each {|lib| content << pathentry.call(lib)}
content << '</loadpath>'
end
task :aptana => :environment do
FileUtils.chdir(RAILS_APPDIR)
File.open(".loadpath", 'w+') do |f|
FileUtils.cd(Gem.path[0]); FileUtils.cd('gems')
gems = Pathname.new('.')
includes = []
LIBS.each do |lib|
gems.entries.each {|e|
includes << File.basename(e) if File.basename(e).index(lib) == 0
}
end
FileUtils.cd(RAILS_APPDIR); FileUtils.cd('vendor')
vendors = Pathname.new('.')
excludes = []
for e in vendors.entries
name = File.basename(e)
if e.symlink? and name.index('rails') == 0
FileUtils.rm(e)
else
unless name.index('plugin') == 0 || name.index('.') == 0
excludes << 'vendor' + File::SEPARATOR + name
end
end
end
f.write loadpath_file(excludes, includes)
end
FileUtils.chdir(RAILS_APPDIR)
File.open(".project", 'w+') do |f|
f.write project_file(project_name)
end
end
end
Sin comentarios »
RSS feed para los comentarios de esta entrada.
Dejar un comentario
Esta obra está bajo una
licencia de Creative Commons.
Este blog funciona gracias a WordPress
con el theme GimpStyle
diseñado por Horacio Bella y adaptado por un servidor.
Feed entradas