5 Noviembre 2011
Pues si, a estas alturas me han entrado ganas de jugar con uno de estos. Motores de este tipo hay muchos, pero ya que estoy aprendiendo rails, que mejor que buscar uno para este framework.
Y buscando buscando, he encontrado varias opciones, de las cuales algunas funcionan como plugin y otras como aplicación base. Pero a mi lo que me interesa ahora es una aplicación base, o eso creo, por lo que voy a probar Lovdbyless.
Después de un par de días intentando usarlo con bundle, cambiar la base de datos a sqlite3, buscar una versión para rails3 que funcionara... por supuesto sin éxito... me decidí a instalarlo tal cual viene en el paquete.
Lo descargué de GitHub por si no estaba totalmente actualizado en la web. Luego de intentar instalarlo con Rails 2.2.2 (según el código es compatible) y jartarme de hacer pruebas, di un paso para atrás (pero para tomar carrerilla claro está) y lo instalé con 2.1.
Primero preparamos el sistema, tengo Ubuntu 10.04 LTS, instalando los paquetes:
- librmagick-ruby
- libmagick++-dev
- libmysql++-dev
- ruby1.8-dev
- linux-libc-dev
- libc6-dev
- openjdk-6-jdk
A partir de este punto todo empezó a ir un poco mejor:
- Descargar de GitHub.
- Cambiar config/environment.rb la versión de rails a 2.1
Preparamos RVM con la versión de Ruby 1.8.7
- rvm gemset create lovdbyless21
- En el directorio: echo "rvm use 1.8.7@lovdbyless21" > .rvmrc
- O salimos del directorio y volvemos a entrar o a mano rvm use ...
Instalamos las gemas necesarias
- gem install rails -v 2.1 --no-rdoc --no-ri
- gem install rflickr --no-rdoc --no-ri
- gem install RedCloth --no-rdoc --no-ri
- gem install rmagick --no-rdoc --no-ri (tendremos que tener instalado ImageMagick)
- gem install hpricot -v 0.6.164 --no-rdoc --no-ri (esta no la pone en el Readme, y no cambiar la versión)
- rake gems:build
La base de datos
- Editar config/database.yml.tmp para configurar la BD mysql. Hay que añadir en cada BD la línea socket: /var/run/mysqld/mysqld.sock
- mv conifg/database.yml.tmp config/database.yml
- rake db:create:all (si da error, crearlas a mano con el comando mysql [create database ...;])
- rake mig a=no
Antes de ejecutar los tests, hay que cambiar un par de cosillas
- En todos los tests, donde ponga assert_redirected_to :login cambiar por assert_redirected_to login_url
- Cambiar en app/views/profiles/_form.html.erb ActiveSupport::TimeZone.us_zones por TimeZones.us_zones
Instalar Sphinx:
- Bajar sphinx 0.9.9
- ./configure
- make
- sudo make install
Y voalá, a partir de aqui me empezó a funcionar.
servido por descarrilando
sin comentarios
compártelo
13 Julio 2011
Hoy voy a probar la gema activeadmin en mi Ubuntu 10.04 y por supuesto, ya con Rails 3.1 (uso ruby 1.8.7). Esta gema se supone que me hará la vida más fácil a la hora de autentificar con usuarios y generar mantenimientos de modelos.
Según la documentación los pasos son:
- Añadir a Gemfile la línea: gem 'activeadmin'
- Ejecutar bundle.... y aquí es cuando me encuentro el primer problema... bundle nunca termina.
Después de mucho buscar encontré que la solución estaba en añadir otra línea a Gemfile:
gem "meta_search", '>= 1.1.0.pre'
Y vuelvo a ejecutar bundle, si si, tarda, pero ya lo normal. Y sigo con la documentación
- rails generate active_admin:install
Aquí se me presenta el siguiente problema:
/home/ruben2m/.rvm/gems/ruby-1.8.7-p352@rails31/gems/will_paginate-3.0.pre2/lib/will_paginate/finders/active_record.rb:36:in `enable!': uninitialized constant ActiveRecord::Associations::AssociationCollection (NameError)
Esto parece que es debido a que lo que instala la gema activeadmin no es compatible con Rails 3.1. ¿Solución? En GitHub hay una rama de active admin para Rails 3.1, la descargo de aquí, busco donde está la gema activeadmin (hay que buscarla donde indica la primera parte de la ruta del error, en este caso /home/ruben2m/.rvm/gems/ruby-1.8.7-p352@rails31/gems/activeadmin-0.2.2) y sustituyo el contenido.
Si ejecutaramos el rails generate otra vez, nos daría un error con kaminari, por lo que tenemos que añadir a Gemfile
gem 'kaminari'
Ahora ya puedo seguir con la documentación
- rails generate active_admin:install
- rake db:migrate
- rails server
Visito http://0.0.0.0:3000/admin e introduzco el usuario que viene por defecto:
- User: admin@example.com
- Password: password
Para que me aparezca en la página un modelo que ya tenga generado:
- rails generate active_admin:resource NombreDelModelo
Bueno, y por ahora no me ha dado más problemas. Seguiré probando.
servido por descarrilando
sin comentarios
compártelo
13 Julio 2011
Desde que empecé con Ubuntu 10.04 he buscado algún entorno para desarrollar con Rails. No voy a entrar en comparaciones pero de lo mejor que he encontrado es el conocido VIM con la extensión dotvim, la cual he ido modificado para adaptarla a mis gustos, y así se ha quedado: https://github.com/ruben2m/vimfiles
Un problema que encontré usando GVIM, es que cuando lo ejecuto desde la consola en ciertas ocasiones en la misma aparecía:
** (gvim:1803): CRITICAL **: murrine_style_draw_box: assertion `height >= -1' failed
Lo que pude solucionar con un poco de google: http://thehacklist.blogspot.com/2010/06/resolving-murrinestyledrawbox-assertion.html
Lo que viene a decir es modificar el archivo: /usr/share/themes/Ambiance/gtk-2.0/gtkrc buscando la línea donde realiza esta asignación: GtkRange::trough-under-steppers = 0 y cambiarla por GtkRange::trough-under-steppers = 1
Hala y ya está...
servido por descarrilando
sin comentarios
compártelo
6 Mayo 2011
Después de tres años opositando, y haberlo conseguido, vuelvo a enfrentarme a la informática.
Ahora probando Ubuntu 10.04 (el 10.10 me da un problema con la tarjeta gráfica que no he podido solucionar) para todo el tema este de Rails, y resulta que cuando me pongo a recuperar lo olvidado... vamos, que tengo que volver a empezar.
Resulta que ha salido Rails 3, y que ha cambiado un sustancial número de cosas.
Me leo un par de librillos y ale, a hacer como que programo. Esta vez, voy a darle una importancia como se merece a los Tests utilizando Cucumber.
Ojito con Cucumber, que cuando pasas archivos de Win a Linux, no soporta bien los caracteres de fin de línea y te puede aparecer
Simplemente abrir el archivo y quitar los caracteres "raros" del final.
Y continuamos... ahora me dice: Undefined method 'visit' cuando ejecuto Cucumber... vaaale:
Modifico en features/support/env.rb
require 'webrat'
require 'webrat/core/matchers'
Webrat.configure do |config|
config.mode = :rack
config.open_error_files = false # Set to true if you want error pages to pop up in the browser
end
World(Webrat::Methods)
World(Webrat::Matchers)
Y además, por un error de que esperas un resultado y te da You are being redirected, añadimos un ficherito:
# features/support/webrat.rb
module Webrat
class Session
def current_host
URI.parse(current_url).host || @custom_headers["Host"] || default_current_host
end def default_current_host
adapter.class==Webrat::RackAdapter ? "example.org" : "www.example.com"
end
end
end
Bueno, aqui dejo mi nota mental sobre cucumber.
¡Saludos!
servido por descarrilando
sin comentarios
compártelo
1 Febrero 2007
Localización simple
Es un plugin para cambiar los mensajes a castellano. He probado con los validates_presence_of, validates_uniqueless_of, y me da el error en castellano antiguo oiga.
¿Y las fechas? Pues solucionado también. Ya no tenemos que indicar los meses en castellano, ni hacer una función especial para que muestre Dia Mes Anyo… con el scaffolding por defecto lo tenemos solucionado.
Oh si, si, más, más… quiero instalarlo… No se si seréis capaces, es tarea de expertos. Estar muy atentos:
Paso 1: Descargar el zip desde aqui
Paso 2: Descomprimir el directorio dentro de vendors/plugins en el proyecto que querais.
Paso 3: Cambiar init.rb, comentar require 'lang_da' y descomentar require 'lang_da'
Se que solo unos pocos habréis sido capaces de realizar esta ardua tarea, con la recompensa de no tener que preocuparos más del español. Para todos aquellos que no hayan podido finalizar los tres pasos… pincha aqui
P.D.: También podeis usar el require ‘lang_pirate’ jeje
servido por descarrilando
sin comentarios
compártelo
22 Enero 2007
Aquí vamos, encaminando un mini proyecto para iniciarme en el mundo RoR… y todo por culpa de mamuso, que dice que es mi amigo… menuda desfachatez, si de verdad lo fuera no me hubiera hablado de RubyOnRails. Más manuales, más horas y total para lo mismo… eso si, lo mismo pero más rápido.
En este blog trataré sobre los problemas que me vayan surgiendo durante el desarrollo de una pequeña aplicación, básicamente clientes, artículos y control de alquileres. Un proyecto fácil si lo hiciera en Delphi, pero no, el niño se ha encaprichado en hacerlo en Rails del cual no tiene ni idea.
Lo primero es hacerse con un buen manual, por supuesto en inglés, que yo soy un tipo duro. Y lo segundo seguro que lo adivináis: LEERLO. Y si, es muy bonito todo lo que se lee, lo escriben muy fácil, pero cuando uno mismo se pone a picar código dices ¿me habré leído un libro de ciencia ficción en vez de un manual?
Empecemos, el scaffolding… digamos que se traduce como el andamiaje, en una línea de código te genera la estructura de un mantenimiento de clientes
ruby script/generate scaffold Cliente
Ale, y ya tenemos mantenimiento. ¿Así de fácil? Pues en el libro pone que si, pero realmente no… me aparece la fecha de alta del cliente en formato Año mes y día, y a la hora de editar los meses aparecen en inglés. Todo el mundo sabe que November es Noviembre, y que llueve, aunque no en Alicante, que estamos secos… en fin, que me desvío. Lo primero es decirle a Rails que en español de toda la vida se dice Noviembre, pues vamos al fichero
(aplicación)/config/environment.rb
y después de la línea
Rails::Initializer.run do |config|
Escribimos:
Date::MONTHNAMES = %w(None Enero Febrero Marzo Abril Mayo Junio Julio Agosto Septiembre Octubre Noviembre Diciembre)
Sencillo… sencillo una leche, claro como ya tenéis la solución. Pero yo estuve 40 minutos leyendo maneras de hacerlo. Eso si, encontré cosas interesantes como un calendario javascript, del cual os hablaré cuando lo pruebe. Tiempo al tiempo.
La segunda cosa que hice fue crearme una función (def) en application_helper para poner unos parámetros por defecto a la función date_select. Seguro que hay maneras mejores de hacerlo, supongo que una solución del estilo MONTHNAMES, pero ya las iré aprendiendo.
def date_select_rm2(tabla, campo)
date_select(tabla, campo, :order => [:day, :month, :year])
end
Ahora con cambiar en las vistas los date_select por date_select_rm2 nos mostrará la fecha correctamente.
Y ahora con vuestro permiso, me voy a tender una lavadora, que ya es hora.
servido por descarrilando
2 comentarios
compártelo