Rorra's blog Senior Developer

julio 30, 2010

Rails 3, mysql y UTF-8

Filed under: Ruby — admin @ 3:01 PM


Empezaron a trabajar con rails 3? Se dieron cuenta que las bases de datos con encoding UTF-8 no funcionan tan bien como esperan? Esto es porque la gema “mysql” trabaja con ASCII-8BIT encoding, pero ruby 1.9 y rails 3 trabajan con UTF-8, así que cuando crean un modelo se graba en la base de datos, pero cuando recuperan esos modelos de la base de datos, no muestra la información que uds. originalmente grabaron.
Cual es la solución? Bueno, hay 3, la más recomendada, usar la gema “mysql2″, para esto, editen el archivo Gemfile para incluirla:

gem "mysql2"

Y luego editen databases.yml y cambien el adaptador a mysql2

development:
  adapter: mysql2
  database: fun_development
  user: root
  password:
  encoding: utf8

Otra solución, es simplemente en vez de usar la gema “mysql” usen la gema “ruby-mysql”, pero es muy lenta porque es una gema 100% ruby.

gem "ruby-mysql"

La última solución, es un monkey patch para seguir utilizando la gema mysql, pero también es lenta, así que de nuevo, recomiendo usar la gema mysql 2.

require 'mysql'

class Mysql::Result
  def encode(value, encoding = "utf-8")
    String === value ? value.force_encoding(encoding) : value
  end

  def each_utf8(&block)
    each_orig do |row|
      yield row.map {|col| encode(col) }
    end
  end
  alias each_orig each
  alias each each_utf8

  def each_hash_utf8(&block)
    each_hash_orig do |row|
      row.each {|k, v| row[k] = encode(v) }
      yield(row)
    end
  end
  alias each_hash_orig each_hash
  alias each_hash each_hash_utf8
end

julio 29, 2010

Contribuir al fuente de rails es algo más fácil de lo que piensan

Filed under: Ruby — admin @ 1:59 PM




Mi primera contribución a rails ya esta hecha :)


Si leen mis posts anteriores, van a encontrar como instalar y trabajar con rails edge, ahora voy a explicar como configurar un buen environment de rails para vivir en rails edge y ayudar a la comunidad de rails revisando los problemas en lighthouseapp.com verificando si realmente son bugs o no, creando fixes para los bugs, o porque no, creando una nuevo feature para el framework.


Suponiendo que ya instalaron la ultima versión de rails (en este momento rails 3 rc), necesitan obtener el código fuente actualizado de rails desde github, y hacer que su proyecto de rails con el que van a trabajar use esa versión, así pueden modificarla para crear fixes, testear bugs, etc.

git checkout http://github.com/rails/rails.git



Creamos la aplicación para hacer test/development

rails new my_app



Editamos el archivo Gemfile de my_app (my_app/Gemfile) para usar el código fuente de rails con el que van a trabajar, pasando a “rails gem” el parámetro :path donde esta el código de rails instalado

gem 'rails', :path => File.expand_path('../../rails',  __FILE__)



Y con eso terminamos, ahora pueden seguir esta guía para ver como trabajar con git y así poder crear posts válidos de los patches en los que trabajen.patches.

julio 27, 2010

Rails 3.0 RC Liberado!!!!

Filed under: Ruby — admin @ 12:00 PM

Finalmente, rails 3.0 RC fue liberado, lo cuál es una excelente noticia porque rails 3.0 trae un monton de updates muy copados, y va a ser más divertido que antes desarrollar en rails 3.0. Me pregunto la cantidad de trabajo que vamos a tener ahora migrando las aplicaciones de rails 2.3.x a rails 3.x.
Rails 3.0 RC fue liberado justo 21 horas después de que bundler 1.0.0.RC.1 fue liberado, realmente una coincidencia como dicen en el blog de rails? Mmmhhh.. Lo loco fue que hasta ayer a la noche, por unos cambios de último momento, bundler 1.0.0.beta.10 me tiraba errores, y ahora por arte de magia ya no tengo errores :)
Como empezar a jugar con rails 3.0.RC? Muy sencillo, primero, instalamos rvm, después de eso, vamos a instalar ruby 1.9.2 RC 2

rvm install 1.9.2

Ahora vamos a empezar a utilizar ruby 1.9.2

rvm 1.9.2

Seguimos con la instalación de bundler, y no vamos a utilizar sudo en ningún momento, porque estamos usando rvm

gem install bundler -v 1.0.0.rc.1

Ahora vamos a instalar rails rc 1

gem install rails --pre

Ya podemos empezar a jugar con rails 3.0

rails app my_app_name
cd my_app_name
bundle install

Finalmente, en lugar de congelar nuestra aplicación con rails 3.0.RC 1, vamos a trabajar con la ultima versión de rails que esta siendo desarrollada (porque vamos a encontrar bugs en la release candidate), editamos el archivo Gemfile y hacemos estas modificaciones:

#gem 'rails', '3.0.0.rc'

# Bundle edge Rails instead:
gem 'rails', :git => 'git://github.com/rails/rails.git'

Actualizamos la aplicación con la última versión de rails

bundle install

Y terminamos :)
Pueden reportar todos los bugs que encuentren en https://rails.lighthouseapp.com/projects/8994-ruby-on-rails, y también revisar los bugs que ya estan reportados, reproducirlos y confirmar si realmente es un bug o no, y no se olviden, al mismo tiempo están testeando bundler 1.0.0.RC.1, así que si encuentran problemas con bundler, pueden reportarlos en http://github.com/carlhuda/bundler/issues.
Esta es su oportunidad para devolverle a la comunidad de rails algo de lo que la comunidad les da a ustedes todos los días!!!.

julio 24, 2010

Instalando RubyDebug con ruby 1.9.2 y rails 3 para RubyMine

Filed under: Ruby — admin @ 5:26 PM


Si están tratando de instalar ruby-debug para debugear sus aplicaciones en rails (o por ahí ruby-debug-ide para RubyMine) y están teniendo problemas, porque tienen instalado en el sistema ruby 1.8.7, y están usando rvm para poder testear rails edge con ruby 1.9.2

Lo primero a notar es que todos los sources que instalaron con rvm estan en $rvm_path/src, así que en caso de que estén usando ruby 1.9.2 rc2 como estoy haciendo yo en este momento, la instalación es muy sencilla.

gem install ruby-debug-ide19 -- --with-ruby-include=$rvm_path/src/ruby-1.9.2-rc2/

Pero si están usando ruby 1.9.1 o cualquier otra versión, pueden fácilmente hacer un ls $rvm_path/src para encontrar la ubicación exacta para compilar ruby-debug-ide19 para su instalación de rvm.

Ahora pueden agregar la gem al archivo Gemfile si están planeando debugear desde la consola

gem 'ruby-debug19', :require => 'ruby-debug', :group => :development

Y luego correr

rails s --debug

O si están usando rubymine, el debug va a empezar, aunque todavía no esta soportado al 100% para ruby 1.9.x, con un poco de suerte lo arreglan antes de liberar la versión 2.3.5, porque creo que nadie quiere usar rails 3 sin ruby 1.9.2 o superior, o al menos, yo no quiero :P

Powered by WordPress