Dummy On RailsO lo que es lo mismo un DOR escribiendo para aprender...2008-06-09T23:43:01+00:00
This is an Atom syndication feed. It is intended to be viewed in a news aggregator or syndicated to another site. Please visit the Atom Project for more information.
Tecnologíathe-shaker: that blog/flickr/multimedia-aggregator kind of thingDummy On Railshttp://s3.amazonaws.com/lcp/dummyonrails/myfiles/avatar65x65.pnghttp://dummyonrails.lacoctelera.net/post/2008/06/09/que-hacer-cuando-gem-install-se-cuelgaQué hacer cuando "gem install" se cuelga2008-06-09T23:43:01+00:002009-06-04T07:54:57+00:00
<p>El repositorio de <a href="http://www.rubygems.org/" title="http://www.rubygems.org/" id=link_1>Rubygems</a> no va precisamente fino últimamente:se come por completo la memoria de tu servidor. Tras el fin de semana intentando instalar Rails en Slicehost, esto es todo lo que he conseguido junto a varias alertas de <strong>Swap Usage</strong>:</p>
<pre>
Bulk updating Gem source index for: http://gems.rubyforge.org/
</pre>
<p>La "amable" respuesta del equipo de soporte de <a href="http://www.slicehost.com" title="http://www.slicehost.com" id=link_0>slicehost</a>: "mira en el foro", algo que había hecho a conciencia sin que ninguna de las propuestas funcionara. (Borrar source_cache, matar procesos zombies... etc.).</p>
<p><a href="http://www.mamuso.net/">Manuel</a> me recomendó que para situaciones hiciera la instalación local descargando las gemas directamente en el servidor.</p>
<p>Y estas son las que necesité para Rails 2.0:</p>
<ol>
<li><a href="http://rubyforge.org/projects/activesupport/">Activesupport</a></li>
<li><a href="http://rubyforge.org/projects/actionpack/">Actionpack</a></li>
<li><a href="http://rubyforge.org/projects/actionmailer">Actionmailer</a></li>
<li><a href="http://rubyforge.org/projects/activerecord/">Activerecord</a></li>
<li><a href="http://rubyforge.org/projects/aws/">Actionwebservice</a></li>
<li><a href="http://rubyforge.org/projects/activeresource/">Activeresource</a></li>
<li><a href="http://rubyforge.org/projects/rake">Rake</a></li>
<li><a href="http://rubyforge.org/projects/rails/">Rails</a></li>
</ol>
<p>Créate una carpeta "sources", y dentro de ella descarga con <strong>wget</strong> cada una de las gemas por el orden que aparece en la lista. La descarga directa es mucho más rápida. Por ejemplo:</p>
<pre>
wget http://rubyforge.org/frs/download.php/37753/activesupport-2.1.0.gem
</pre>
<p>Una vez las tengas todas, ejecuta el comando gem <nombre_de_la_gema> con el parámetro -l, que quiere decir que se instalará sin acudir al repositorio de gemas.</p>
<pre>
gem install <nombre_de_la_gema> -l
</pre>
<p>Una vez instalado Rails, aparentemente las gemas causantes de este cuelgue, pude instalar las gemas de <strong>mongrel</strong> y <strong>mongrel_cluster</strong> y probar <strong>gem update</strong> con toda normalidad.</p>
<p>Qué paciencia...
</p>
</nombre_de_la_gema></nombre_de_la_gema>
Dummy On Railshttp://s3.amazonaws.com/lcp/dummyonrails/myfiles/avatar65x65.pnghttp://dummyonrails.lacoctelera.net/post/2008/06/09/errores-al-arrancar-mongrel-openssl-runtimeerrorErrores al arrancar mongrel -- openssl (RuntimeError)2008-06-09T19:38:18+00:002008-06-09T19:38:18+00:00
<p>Si una vez instalado Rails al arrancar el servidor te muestra un error <em>openssl (RuntimeError)</em> como en el ejemplo:</p>
<pre>
=> Booting Mongrel (use 'script/server webrick' to force WEBrick)
=> Rails 2.1.0 application starting on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
** Starting Mongrel listening at 0.0.0.0:3000
** Starting Rails with development environment...
Exiting
/usr/local/lib/ruby/gems/1.8/gems/rails-2.1.0/lib/initializer.rb:225:in
`require_frameworks': no such file to load -- openssl (RuntimeError)
</pre>
<p>Una de las soluciones posibles es instalar (o reinstalar) libopenssl-ruby con el comando siguiente.</p>
<pre>
sudo apt-get install libopenssl-ruby
</pre>
<p>A mí me ha funcionado!
</p>
Dummy On Railshttp://s3.amazonaws.com/lcp/dummyonrails/myfiles/avatar65x65.pnghttp://dummyonrails.lacoctelera.net/post/2008/05/20/rails-2-0-creando-aplicacion-con-mysqlRails 2.0. Creando una aplicación con MySQL2008-05-20T21:40:52+00:002008-06-09T19:31:56+00:00
<p>Al crear una aplicación con Rails 2.0.2, te encontrarás que, por defecto, la base de datos es SQLite3. ¿Razón? Sencillez, según el equipo responsable de Rails. </p>
<p>Si estás acostumbrado a trabajar con MySQL, mediante el parámetro "-d mysql", puedes saltarte la versión por defecto tomar como base de datos MySQL.</p>
<pre>
rails mi-aplicacion -d mysql
</pre>
<p>Fuente: <a href="http://weblog.rubyonrails.org/2007/12/17/rails-2-0-2-some-new-defaults-and-a-few-fixes" title="http://weblog.rubyonrails.org/2007/12/17/rails-2-0-2-some-new-defaults-and-a-few-fixes" id=link_0>Rails 2.0.2: Some new defaults and a few fixes</a>
</p>
Dummy On Railshttp://s3.amazonaws.com/lcp/dummyonrails/myfiles/avatar65x65.pnghttp://dummyonrails.lacoctelera.net/post/2008/05/20/que-hacer-cuando-ubicacion-ruby-es-diferente-losQué hacer cuando la ubicación de Ruby es diferente en los entornos de desarrollo y producción2008-05-20T21:21:15+00:002009-04-12T19:35:35+00:00
<p>Es un problema típico: en tu máquina tienes en acceso a Ruby en una ubicación, por ejemplo en "/usr/local/bin/ruby" y en tu entorno de desarrollo en "/usr/local/bin/ruby". </p>
<p>Esta información es necesaria en la primera línea de los scripts o <a href="http://en.wikipedia.org/wiki/Shebang_(Unix)" title="http://en.wikipedia.org/wiki/Shebang_(Unix)" id=link_0>shebang</a>, que es aquella que llamará a los ejecutables de Ruby.</p>
<p>¿Qué significa esto? Que para ejecutar scripts en Ruby deberías cambiar la primera línea de tus scripts para acomodarlo al entorno en el que vaya a funcionar la aplicación.</p>
<h3>Solución</h3>
<p>Mediante el parámetro "--ruby /ruta/a/ruby" puedes generar las aplicaciones con el shebang que introduzcas en el parámetro. En este caso, tras averiguar la ruta hacia Ruby el servidor de producción:</p>
<p>puedes predeterminar el shebang de una aplicación para que cuadre con la ruta en producción, mediante el parámetro --ruby</p>
<p>El shebang resultante sería:</p>
<p>Si el enlace a tu máquina de desarrollo no tiene acceso a Ruby en esa ubicación, puedes, mediante un enlace simbólico (symlink) crear un vínculo entre las rutas de tu entorno de desarrollo y la que has definido para producción en el paso anterior. De esta manera, la aplicación funcionaría en ambos entornos sin tener que tocar el shebang.</p>
<pre>
# Enlazar la ubicación de Ruby en desarrollo con un symlink
local$ sudo ln -s /opt/local/bin/ruby /usr/local/bin/ruby
local$ sudo ln -s /opt/local/bin/ruby /usr/bin/ruby
</pre>
<p>Fuente: Deploying Rails Applications. A step by step guide. Ezra Zygmuntowicz
</p>
Dummy On Railshttp://s3.amazonaws.com/lcp/dummyonrails/myfiles/avatar65x65.pnghttp://dummyonrails.lacoctelera.net/post/2008/04/25/capgemini-dinamarca-incluye-oficialmente-ruby-on-rails-su-2Capgemini Dinamarca incluye oficialmente Ruby On Rails en su offering2008-04-25T12:31:28+00:002008-04-25T12:31:28+00:00
<p>El equipo de Jesper Rønn-Jensen, lleva trabajando con Rails como herramienta de prototipado desde hace tiempo para grandes clientes de Capgemini Dinamarca. Jesper es un participante activo en la Comunidad Rails internacional, desarrollando plugins, asistiendo a Conferencias. Ha hecho varias presentaciones explicando los beneficios de Rails para prototipar , como en <a href="http://justaddwater.dk/2006/06/01/my-talk-at-reboot8-prototyping/" title="http://justaddwater.dk/2006/06/01/my-talk-at-reboot8-prototyping/" id=link_0>reboot8</a>.</p>
<p>El caso es que ya es oficial:<br />
<href="http://justaddwater.dk/2008/04/24/capgemini-website-article-prototyping-and-ruby-on-rails/>Capgemini Dinamarca usa Ruby On Rails</a> como herramienta de prototipado y en algunos casos en producción.</p>
<p>Razones: mayor productividad, menor coste y mejoras notables en la calidad del producto final. Tal y como lo cuentan parece ser la piedra filosofal del software.</p>
<blockquote><p>We have had working prototypes up and running in a matter of hours. A specific example was a project we decided to implement in Ruby on Rails. Originally the project was estimated at 400 hours in Microsoft .Net. With Ruby on Rails we could deliver it in 110 hours.<br />
-- Jesper Rønn-Jensen
</p></blockquote>
Dummy On Railshttp://s3.amazonaws.com/lcp/dummyonrails/myfiles/avatar65x65.pnghttp://dummyonrails.lacoctelera.net/post/2008/04/25/charla-dhh-la-startup-schoolCharla de DHH en la Startup School2008-04-25T11:35:11+00:002008-04-25T11:35:11+00:00
<p>Como hicieran ya Jeff Bezos o Marc Andreessen pioneros de la web que conocemos hoy en día, David Heinemeier Hanson ha dado su charla en la Startup School. Aquí el video.</p>
<object type="application/x-shockwave-flash" height="263" width="320" id="jtv_player_flash" data="http://www.justin.tv/widgets/jtv_tip_embed.swf" bgcolor="#000000">
<param name="movie" value="http://www.justin.tv/widgets/jtv_tip_embed.swf" />
<param name="allowFullScreen" value="true" />
<param name="flashvars" value="auto_play=false&start_volume=25&title=DHH Talk - Startup School 2008&start_time=1208631951000&end_time=1208633866000&channel=hackertv&tip_id=97862" /></object>
<p><a href="http://www.justin.tv/hackertv" style="padding:2px 0px 4px; display:block; width:320px; font-weight:normal; font-size:10px; text-decoration:underline; text-align:center;">Watch live video from HackerTV on Justin.tv</a>
</p>
Dummy On Railshttp://s3.amazonaws.com/lcp/dummyonrails/myfiles/avatar65x65.pnghttp://dummyonrails.lacoctelera.net/post/2008/02/02/errores-con-rake-db-migrateErrores con rake db:migrate2008-02-02T10:26:14+00:002008-02-02T10:43:48+00:00
<p>Estamos en entorno de desarrollo (Mac Os X)...</p>
<ul>
<li>Has creado tu aplicación mediante el comando Rails (rails miapp --database=mysql). Es importante que especifiques el tipo de base de datos que quieres emplear, ya que en caso contrario, por defecto puede tomar SQLite.</li>
<li>Has creado la base de datos de desarrollo: con el comando <em>mysqladmin -u root miapp_development</em>.</li>
<li>Has configurado el archivo config/database.yml para conectar con la base de datos de desarrollo.</li>
</ul>
<p>Para comprobar que todo funciona correctamente, acude al shell e introduce el comando:</p>
<blockquote><p>rake db:migrate</p></blockquote>
<p>Si el sistema muestra el siguiente mensaje de error:</p>
<blockquote><p>/usr/local/bin/rake:17: undefined method `require_gem' for main:Object (NoMethodError)</p></blockquote>
<p>Es porque la versión de rake en nuestro sistema está desactualizada. Para actualizarla, y desde el shell, debemos introducir el siguiente comando.</p>
<blockquote><p>sudo gem install --remote rake</p></blockquote>
<p>Vuelve a introducir rake db:migrate y el mensaje de error habrá desaparecido.
</p>
Dummy On Railshttp://s3.amazonaws.com/lcp/dummyonrails/myfiles/avatar65x65.pnghttp://dummyonrails.lacoctelera.net/post/2008/01/14/videocasts-sobre-ruby-y-ruby-on-railsVideocasts sobre Ruby y Ruby On Rails2008-01-14T21:11:34+00:002008-01-14T21:11:34+00:00
<p>Si quieres comenzar o continuar con tu proceso de autoaprendizaje sobre programación con Ruby On Rails estás de suerte: la Comunidad Rails genera los mejores contenidos didacticos para aprender a programar.
<div><br class="webkit-block-placeholder"></div>
<div>Imprescindibles:
<div><br class="webkit-block-placeholder"></div>
<div><a href="http://www.peepcode.com/" title="http://www.peepcode.com/" id="link_0">Peepcode</a>: es de pago. Por el precio de una comida -9$-, tienes un videocast con su documentación y código. Peepcode es imprescindible para aprender sobre tópicos avanzados.</div>
<div><br class="webkit-block-placeholder"></div>
<div><a href="http://railscasts.com/" title="http://railscasts.com/" id="link_1">Railscasts</a>: Más de 80 videocasts introductorios sobre todos los temas que puedes necesitar para programar una aplicación con Ruby On Rails.</div>
<div><br class="webkit-block-placeholder"></div>
<div><a href="http://www.rubyplus.org/" title="http://www.rubyplus.org/" id="link_2">RubyPlus</a>: de reciente lanzamiento y también gratuito. Su diferencia: no sólo se dedica a Rails, sino que comienza con videocasts de Ruby, algo que ayuda a comprender mejor cómo funciona todo este tinglado.
</div>
<div><br class="webkit-block-placeholder"></div>
<div>A disfrutar...</div>
</div>
</br></br></br></br></br></p>
Dummy On Railshttp://s3.amazonaws.com/lcp/dummyonrails/myfiles/avatar65x65.pnghttp://dummyonrails.lacoctelera.net/post/2007/06/13/sobre-pluginsSobre Plugins2007-06-13T09:08:01+00:002007-11-06T07:58:43+00:00
<p>Los Plugins son librerías independientes hechas especialmente para Rails. Son una buena manera de reutilizar el código de otras personas o empaquetar tu propio código para ser reutilizado posteriormente. (<a href="http://www.nubyonrails.com/" title="http://www.nubyonrails.com/" id=link_4>Geoffrey Grosenbach</a> )</p>
<p><a href="http://nubyonrails.com/articles/2006/05/04/the-complete-guide-to-rails-plugins-part-i" title="http://nubyonrails.com/articles/2006/05/04/the-complete-guide-to-rails-plugins-part-i" id=link_0>The Complete Guide to Rails Plugins: Part I</a> </p>
<p><a href="http://nubyonrails.com/articles/2006/05/09/the-complete-guide-to-rails-plugins-part-ii" title="http://nubyonrails.com/articles/2006/05/09/the-complete-guide-to-rails-plugins-part-ii" id=link_2>The Complete Guide to Rails Plugins: Part II</a> </p>
<p><a href="http://wiki.rubyonrails.com/rails/pages/HowTosPlugins" title="http://wiki.rubyonrails.com/rails/pages/HowTosPlugins" id=link_1>Plugins Howto</a> </p>
<p><a href="http://railscasts.com/episodes/33" title="http://railscasts.com/episodes/33" id=link_3>Making a Plugin</a> (video)
</p>
Dummy On Railshttp://s3.amazonaws.com/lcp/dummyonrails/myfiles/avatar65x65.pnghttp://dummyonrails.lacoctelera.net/post/2007/06/13/rake-algunos-comandos-utilesRake: algunos comandos útiles2007-06-13T08:35:04+00:002009-03-04T00:22:01+00:00
<p>Rake es el equivalente a make para Ruby. Sirve para crear y automatizar tareas de mantenimiento. Estos son algunos de los comandos más útiles:</p>
<p><strong>rake</strong>: sin parámetros reconstruye la base de datos de testing utilizando las migraciones y ejecuta todos los tests en el directorio test.</p>
<p><strong>rake db:migrate:</strong> actualiza la base de datos. Con el parámetro <strong>VERSION=X</strong>, después del comando, la actualiza a la versión especificada, por ejemplo, <strong>rake db:migrate VERSION=3</strong>.</p>
<p><strong>rake db:test:clone</strong>: copia la base de datos de desarrollo en la de testing para ejecutar los tests.</p>
<p><strong>rake stats</strong>: muestra las estadísticas de nuestra aplicación.</p>
<pre>
+----------------------+-------+-------+---------+---------+-----+-------+
| Name | Lines | LOC | Classes | Methods | M/C | LOC/M |
+----------------------+-------+-------+---------+---------+-----+-------+
| Controllers | 7 | 3 | 1 | 0 | 0 | 0 |
| Helpers | 3 | 2 | 0 | 0 | 0 | 0 |
| Models | 44 | 27 | 4 | 1 | 0 | 25 |
| Libraries | 0 | 0 | 0 | 0 | 0 | 0 |
| Components | 0 | 0 | 0 | 0 | 0 | 0 |
| Integration tests | 0 | 0 | 0 | 0 | 0 | 0 |
| Functional tests | 0 | 0 | 0 | 0 | 0 | 0 |
| Unit tests | 82 | 63 | 4 | 6 | 1 | 8 |
+----------------------+-------+-------+---------+---------+-----+-------+
| Total | 136 | 95 | 9 | 7 | 0 | 11 |
+----------------------+-------+-------+---------+---------+-----+-------+
Code LOC: 32 Test LOC: 63 Code to Test Ratio: 1:2.0
</pre>
<p><strong>rake doc:app</strong>: genera la documentación del proyecto basándose en RDoc (Lectura recomendada: <a href="http://toolmantim.com/article/2007/4/19/introduction_to_rdoc" title="http://toolmantim.com/article/2007/4/19/introduction_to_rdoc" id=link_1>Introducing RDoc</a> ).</p>
<p><strong>rake db:sessions:create</strong>: crea una tabla para almacenar sesiones de usuario mediate cookies. Útil para sistemas con autenticación.</p>
<p><strong>rake db:sessions:clear</strong>: Cada sesión de usuario crea una nueva fila en la tabla de sesiones, por lo que es importante realizar limpiezas periódicas. Este comando vacía la tabla de sesiones.</p>
<p><strong>rake log:clear</strong>: limpia los archivos de log de la aplicación. Conviene ejecutarlo periódicamente para evitar que los archivos ocupen demasiado espacio.</p>
<p><strong>rake rails:freeze:gems</strong>: importante si queremos mantener nuestra aplicación "congelada", es decir, utilizar la versión de Rails que tenemos instalada actualmente en el sistema de manera que una actualización inesperada incompatible no rompa nuestro trabajo. </p>
<p><strong>rake rails:unfreeze</strong>: descongela la aplicación abriéndola a actualizaciones.</p>
<p><strong>rake rails:freeze:edge</strong>: para valientes. Copia el último código disponible del repositorio subversion de Rails -posiblemente inestable- y lo almacena en el directorio vendor/rails de la aplicación.</p>
<p>Fuentes: Ruby On Rails, Beginning Ruby On Rails for eCommerce Appress, 2006, <a href="http://www.martinfowler.com/articles/rake.html" title="http://www.martinfowler.com/articles/rake.html" id=link_0>Martin Fowler</a>
</p>