Showing posts with label ruby. Show all posts
Showing posts with label ruby. Show all posts

Monday, September 29, 2008

Gedit Cheat Sheet para Ruby on Rails

Aunque existen varios IDE's para Ruby on Rails, me he dado cuenta que con un simple editor y varios snippets es suficiente para desarrollar aplicaciones web con Ruby on Rails. Al final me he decidido por Gedit, el editor por defecto en Gnome (el de Ubuntu).

He seguido algunas guías que le dan un aspecto parecido al textmate de mac:


Y he prepararado un cheat sheet (chuleta o chivo) para los snippets más utilizados:



My Gedit Cheat Sheet for Rails Development

Thursday, September 18, 2008

BOSSMan: Yahoo! BOSS + Ruby

Con el lanzamiento de Yahoo! BOSS ha llegado BOSSMan, un plugin/gem creado por el desarrollador Jay Pignata que permite interactuar con éste nuevo API de Yahoo! de una forma bien simple, como son las cosas en Ruby.

Para ver como funciona he creado un buscador de noticias bilingüe utilizando Ruby on Rails, http://yahoosearch.heroku.com. Aquí está el código:


Instalación de BOSSMan:
gem sources -a http://gems.github.com
gem install jpignata-bossman

controllers/search_controller.rb

require 'rubygems'
require 'bossman'
include BOSSMan

class SearchController < ApplicationController
def index
@results = Array.new
@language = [true, false]
if (request.post? and params[:query] != "")
BOSSMan.application_id = "<Your Application ID>"
@news = BOSSMan::Search.news(params[:query], {
:region => 'us',
:lang => params[:language],
:age => "7d",
:count => 10 })
@results = @news.results if @news.count != "0"
@language = [false, true] if params[:language] == 'es'
end
end
end


views/layout/application.html.erb

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">
<html>
<head>
<title>News from Yahoo! by BOSSMan</title>
<%= stylesheet_link_tag 'style' %>
</head>
<body>
<div id='header'>
<h1>News from Yahoo! by BOSSMan</h1>
</div>
<div id="content">
<%= yield %>
</div>
<div id="footer">
<div id="altnav">
<%= link_to 'Home', '/' %> -
<%= mail_to 'contact@yahoosearch.com', 'Contact' %>
</div>
Yahoo! Search by BOSSMan
</div>
</body>
</html>


views/search/index.html.erb

<div id="form">
<% form_tag :action => 'index' do%>
<%= radio_button_tag 'language', 'en', @language[0], {} %>
English
<%= radio_button_tag 'language', 'es', @language[1], {} %>
Español<br/>
<%= text_field_tag 'query', params[:query], :size => '50' %>
<%= submit_tag 'Search' %>
<% end %>
</div>
<% if @results.length != 0 %>
<div id="results">
<%= render :partial => 'results', :collection => @results %>
</div>
<% end %>


views/search/_results.html.erb

<div id="result">
<h4><%= link_to results.title, results.url %></h4>
<p><%= results.abstract %></p>
<h6><%= link_to results.source, results.sourceurl %>
<%= "#{results.date} #{results.time}" %></h6>
</div>


public/stylesheets/style.css

body {
background-color: #5a8f5e;
font-family: Verdana;
}

#header{
text-align: center;
}

#content {
background-color: white;
border: 1px solid black;
width: 750px;
margin: 20px auto;
padding: 20px;
}

#form {
text-align: center;
}

#results{
margin-top: 20px;
padding: 5px 20px 5px 20px;
border: 1px solid gray;
}

#result h4 {
margin-bottom: 5px;
}

#result h6 {
margin-top: 5px;
}

#result p {
margin-top: 0px;
margin-bottom: 0px;
}

#footer {
margin: 0px auto;
width: 750px;
color: #c9c9c9;
line-height: 20px;
}

#footer a {
color: #c9c9c9;
text-decoration: none;
}

#footer a:hover {
color: #000000;
}

#footer #altnav {
width: 350px;
float: right;
text-align: right;
}

Tuesday, May 27, 2008

Códigos que te harán usar Ruby

Tal y como lo definen en su página oficial, Ruby es un lenguaje de programación dinámico y de código abierto enfocado en la simplicidad y productividad. Su elegante sintaxis se siente natural al leerla y fácil al escribirla. Fue creado por Yukihiro "Matz" Matsumoto a mediado de los 1990's.

Me topé con Ruby hace menos de un año (8 meses), cuando estaba realizando mi tesis del Máster en Ingeniería de Software, y desde que empecé a utilizarlo como lenguaje de programación me di cuenta de lo que me estaba perdiendo. Una de las cosas que me encantan de este lenguaje de programación es la simplicidad y la reutilización del código. Esto se debe a que todo es un objeto.

A continuación algunos ejemplos individuales que muestran lo divertido que es programar en Ruby:

#muestra el contenido de una enumeración
%w(luis tomas).each { |n| puts n + ' es un nombre' }
#=> luis es un nombre
#=> tomas es un nombre

#cuenta las vocales en una cadena
str = 'me gusta ruby on rails'
puts str.scan(/[aeiou]/).length
#=> 7

#métodos de arreglos
arreglo = [45, 78, 12, 53]
puts arreglo.sort
#=> 12, 45, 53, 78
puts arreglo.max
#=> 78

#
métodos de rangos
digitos = 1..9
puts digitos.include?(5)
#=> true
puts digitos.include?(12)
#=> false

Hacer esto en otros lenguajes de programación no es tan sencillo, y mucho menos en línea de comando o en Internet.

Friday, March 28, 2008

Ruby on Rails vs Java

Una imagen vale más que mil palabras...

Friday, February 15, 2008

Plugin para Flickr en Ruby on Rails

Al instalar el plugin para trabajar con Flickr en Ruby on Rails me di cuenta de que siempre me daba el siguiente mensaje de error, sin importar el API Key que colocara:
"Invalid API Key (Key has expired)"

Esto pasa porque el plugin viene con un API Key predeterminada y es necesario modificarla por la personal.

El plugin se instala así:
sudo gem install flickr

Luego, en el archivo:
[ruta_gems]/gems/flickr-1.0.0/flickr.rb

se coloca el API Key personal sustituyendo la que trae, que por cierto está vencida:
def initialize(api_key='API Key personal', email=nil, password=nil)

También está la opción de obtener una versión corregida del plugin, que ha sido realizada por la comunidad de desarrolladores de Ruby on Rails. Me imagino que ésta se convertirá en la versión definitiva, porque la forma de trabajar de la actual no va con el estilo de Ruby on Rails.

Thursday, January 31, 2008

Error en Rails: unexpected tINTEGER

Durante esta mañana estuve creando algunos modelos en Ruby on Rails. El siguiente error me daba cuando trataba de hacer .find(:all) a uno de ellos:

SyntaxError: compile error
.../gems/activerecord-2.0.2/lib/active_record/base.rb:1748
: syntax error, unexpected tINTEGER
Object::1


El problema es que estaba utilizando un campo llamado type. Al parecer Rails no acepta que un campo se llame así. Me imagino que deben de habar más palabritas que no se puedan utilizar. ¿Conoces alguna otra?

Sqlite por MySql en Rails2

Acabo de crear mi primera aplicación con Rails2 y me entero de que utiliza Sqlite como base de datos predeterminada en vez de MySql, que era la que se usaba con Rails1.

Había oído hablar de Sqlite pero nunca lo había utilizado. Me he puesto en eso y me ha gustado bastante, especialmente su sencillez :)

Veo que una de las principales causas de éste cambio es que la mayoría de los desarrolladores de Ruby on Rails trabaja con Mac y este sistema operativo trae este manejador de base de datos instalado; aparte de que sigue algunos de los principios de Rails: sencillez y cero configuración.

El uso de Sqlite en aplicaciones web tiene la ventaja de que no necesita configuración, y mucho mejor cuando se está trabajando en el desarrollo y pruebas.

Sin embargo, gracias a la forma en que Rails maneja su arquitectura MVC (modelo-vista-controlador), es bastante sencillo cambiar de base de datos, sólo hay que modificar el archivo config/database.yml, y listo!

Thursday, January 24, 2008

rails error: no such file to load — openssl (Ruby on Rails)

Luego de actualizar a la ultima versión de Rails y Gem en mi sistema operativo (Linux) me he topado con el siguiente error:

rails error: no such file to load — openssl (Ruby on Rails)
...
...

Este error pasa porque Rails está solicitando la biblioteca libopenssl para Ruby. Este error se corrige al instalar la biblioteca solicitada:

$ sudo apt-get install libopenssl-ruby1.8