domingo, 4 de noviembre de 2012

Layout en Ruby on rails con Bootstrap de Twitter

Vamos a desarrollar un controlado llamado "default" que contendrá la parte publica de nuestra aplicación. Para crearemos un layout llamado bootstrap usando el framework css Bootstrap de twitter

En  el enlace anterior podrán descargar los archivos y verán la documentación de la librería que nos ayudará en la aceleración dejando en segundo plano temas de css.

Para esto mi editor es Sublime Text 2 y tengo un proyecto generado llamado "support":



Paso 1: Creamos el archivo Layout.

Nos dirigimos a la carpeta app/views/layouts ahí crearemos un archivo que lo llamaré bootstrap.html.erb, con esto tenemos para el proyecto un nuevo layout llamado "bootstrap", en los futuros controladores que generes le agregaras una propiedad layout para asignarle el nombre del layout a cargarse siempre.


Paso 2: generamos un controlador y le asignamos el layout.

Abrimos un terminal y nos dirigimos a la carpeta del proyecto generado y ejecutamos el siguiente comando para generar un nuevo controlador que lo llamaré "default".


rails g controller default index


Al ejecutar esto, se generarán varios archivos y carpetas pero por ahora solo nos interesa los archivos controlador "default" y vista "index".


En la imagen anterior se observa el controlador con su respectiva vista, abrimos el controlador y vemos el método index que habíamos dicho por defecto en el comando anterior, sobre este método esta una linea  donde le decimos que este controlador se cargará el layout que deseemos.

Si queremos que todos los controladores carguen un layout que preparemos para un determinado proyecto hay que siempre agregar esa linea.


Paso 3: Preparamos el bootstrap de twitter con Ruby on Rails

Descargamos los archivos de bootstrap de su sitio web oficial: http://twitter.github.com/bootstrap/

Primero vamos a intentar solo con los archivos CSS los ubicaremos en la carpeta stylesheets de app/assets/stylesheets


El archivo que creamos en el paso 1  agregamos los css de la librería que descargamos, quedará de manera similar:



Paso 4: Usando Bootstrap en las vistas de los controladores

Ahora en la vista del default vamos a codificar puro HTML pero al estilo y reglas como las dice Bootstrap, invito a leer un poco sobre este muy buen framework de CSS.


Para que funcione copio el código HTML aquí, pero aconsejo que lean un poco de este framework:

   <!-- Contenedor de general-->
    <div class="container">
            <header>
                <!-- Title-->
                <div class="row">
                    <div class="span12">
                        <h1><a href="#">Twitter BootsTrap</a></h1>
                        <p>Trabajando con Twitter BootsTrap</p>
                    </div>
                </div>
                <!-- Fin del title-->
                <!-- Banner-->
                <div class="row">
                    <div class="span12">
                        <img src="http://lorempixel.com/1170/300/nature" alt="">
                    </div>
                </div>
                <!-- Fin del Banner-->
                <!-- Inicio del Menu-->
                <div class="navbar">
                    <div class="navbar-inner">
                        <div class="container">
                            <ul class="nav">
                                <li class="active"><a href="#">Home</a></li>
                                <li><a href="#">About</a></li>
                                <li><a href="#">Contact</a></li>
                            </ul>
                        </div>
                    </div>
                </div>
                <!-- Fin del Menu-->
            </header>
            <section class="row">
                <div class="span12">
                    <ul class="thumbnails">
                        <li class="span3">
                            <div class="thumbnail">
                                <img src="http://lorempixel.com/260/180/sports/2" alt="" />
                                <h2>Lorem Ipsum</h2>
                                <p>Lorem ipsum dolorum</p>
                            </div>
                        </li>
                        <li class="span3">
                            <div class="thumbnail">
                                <img src="http://lorempixel.com/260/180/sports/3" alt="" />
                                <h2>Lorem Ipsum</h2>
                                <p>Lorem ipsum dolorum</p>
                            </div>
                        </li>
                        <li class="span3">
                            <div class="thumbnail">
                                <img src="http://lorempixel.com/260/180/sports/4" alt="" />
                                <h2>Lorem Ipsum</h2>
                                <p>Lorem ipsum dolorum</p>
                            </div>
                        </li>
                        <li class="span3">
                            <div class="thumbnail">
                                <img src="http://lorempixel.com/260/180/sports/5" alt="" />
                                <h2>Lorem Ipsum</h2>
                                <p>Lorem ipsum dolorum</p>
                            </div>
                        </li>                       
                    </ul>
                </div>
            </section>
    </div>
    <!-- Fin del Contenedor-->
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>


Ahora solo queda explotar al máximo las ventajas que tendrán con este buena herramienta y poco a poco vamos tomando soltura para desarrollar nuestro proyecto y themes para diversos proyectos.




miércoles, 31 de octubre de 2012

Crear un proyecto con Ruby on Rails

Hola, en mi anterior post instalamos Ruby on Rails en Ubuntu, ahora vamos a crear un proyecto, instalar un plugin en Netbeans, crear un controlador simple y mostrar un saludo.

Mi anterior post: Instalar Ruby on Rails en Ubuntu

Paso 1: Crear el proyecto con Ruby on Rails desde el terminal.

Vamos a crear un proyecto llamado "support" en la que más adelante implementaremos un sistema de ordenes de soporte, abrimos el terminal  o la ventana de consola y escribimos:

rails new /home/johnny/Documentos/support -d mysql

En la anterior linea de comando le indicamos a rails que genere un proyecto en la ruta puesta y como opción adicional le indicamos que sea con el motor mysql, esta última parte es opcional ya que por defecto lo genera con sqlite3.



Al terminar nos ubicamos el ruta que indicamos para crear el proyecto y veremos el directorio generado.




Paso 2: Iniciamos el servidor web de Ruby on Rails

Nos dirigimos nuevamente al terminal  ingresamos a la carpeta de nuestro proyecto, en mi caso será así:

cd /home/johnny/Documentos/support/

Ahora Ejecutamos el comando para iniciar el servidor.

rails s

EL terminal se mostrará algo como esto:


En esta anterior imagen se muestra que el servidor ya está iniciado y que puedes abrir el proyecto en tu http://localhost:3000/  



Paso 3: Instalar plugin Ruby on Rails en Netbeans


La versión que uso es la 7.1.2 y soporta muy bien, con el Netbeans 7.2.x no es posible instalar por ahora, este fix para instalar plugin en Netbeans lo encontré en los foros de  sitio web de Netbeans es solo unos cuantos pasos.

1) Ir a Tools -> Plugins -> Settings, click en Add
2) En el campo NAME escriba el nombre con el cual pueda reconocer el plugin que instales
3) En el campo URL escriba este url  http://nbruby.hron.me/updates/updates.xml
4) Click en OK


Paso 4: creamos el proyecto con Netbeans

Una vez instalado el plugin  vamos a crear un proyecto Netbeans con la opción de archivos existentes, la forma directa es posible hacerlo, pero ello implica que te pida instalar algunas gemas con netbeans es un tema que lo veremos en otro post. La idea de esto es levantar el proyecto con este IDE y disfrutar de sus opciones que algunos nos trae buena ventaja.




Click en Finish y vemos ahora el directorio del proyecto




Paso 5: Crear un controlador en Ruby on Rails

Abrimos otra ventana de terminal y nos dirigimos a la carpeta de nuestro proyecto, inmediatamente despues ejecutamos el comando para generar nuestro nuevo controlador

cd /home/johnny/Documentos/support/

rails g controller register index

Este ultimo comando tiene 4 palabras el segungo "g" es generate, la tercera palabra es indicarle el nombre del nuevo controlador en este caso "register" y la cuarta palabra es "index" esto creara una vista index.




Vemos en el directorio de Netbeans que se actualizó



Nos vamos a la carpeta config/routes.rb  y editamos  la linea 53 donde esta el root
ahí le indicamos que este será nuestro controlador por defecto.



A continuación ingresamos a la carpeta "Public" y eliminamos el archivo "index.html"

Al actualizar nuestro navegador observaremos que quizás nos muestre un error de conexión a la Base de datos Mysql que configuramos.

Para ello tenemos que hacer 2 cosas:
1. Configurar la conexión a la Base de datos esto está en la carpeta config/database.yml, este archivo tiene la configuración muestra 3 ambientes de trabajo, el que tenemos activado por defecto es el de "development" en la opción de password escribir el password de acceso a la Base de datos.

2. Ahora en el ambiente "development" el proyecto señala una Base de datos, evidentemente no existe así que tienes que crearla en tu administrador de MySQL.


Ahora vamos a editar nuestra vista con puro HTML para mostrar un mensaje en nuestra pantalla,
nos dirigimos  a la carpeta "views/register/index.html.erb"



Ahora volvemos al navegador y actualizamos nuestro navegador y observamos:


Espero que les sirva en algo, para mi próximo post será integrar con algún framework de css para trabajar de manera rápida algunas interfaces. saludos



sábado, 27 de octubre de 2012

Instalar Ruby on Rails en Ubuntu


Holas

Después de varios meses vuelvo, esta vez es para compartir algunas cosas sobre Ruby, para ser más especifico es acerca de su framework para desarrollar aplicaciones Web.


Vamos a instalar Ruby y su framework rails en Ubuntu, actualmente mi Ubuntu es 12.04, por actualizar a la 12.10 pero funciona bien en ambas versiones, solo es recomendable instalar la versión de Ruby 1.9.x en adelante.

Paso 1: Instalando Ruby usando RVM(Ruby Version Manager)

Seguramente se preguntaran por que instalar con  RVM, lo uso por que me facilita la instalación de múltiples interpretes, también la versión de Ruby que necesite, los tiempos de ejecución, en fin.

  • sudo apt-get update
  • sudo apt-get install curl
  • curl -L get.rvm.io | bash -s stable
  • source ~/.rvm/scripts/rvm
  • rvmsudo apt-get install build-essential openssl 
    libreadline6 libreadline6-dev curl git-core zlib1g 
    zlib1g-dev libssl-dev libyaml-dev libsqlite3-dev sqlite3 
    libxml2-dev libxslt-dev autoconf libc6-dev ncurses-dev 
    automake libtool bison subversion
     
     
     
 Paso 2: Instalando Ruby

A continuación instalaremos la versión última de Ruby y definiremos esta por defecto.

  • rvm install 1.9.3 
  • rvm use 1.9.3 --default
     
     
     
     
Paso 3: Instalando las gemas de Ruby

Con la siguiente linea de comando nos aseguraremos de instalar todos los componentes que necesitemos.

  • rvm rubygems current


Paso 4: Instalando Rails

Una vez terminado la configuración e instalar los componentes necesarios, ejecutar la siguiente linea  de comando.

  • gem install rails


Paso 5: Error en el compilador de javaScript (opcional)

Este paso es opcional por que puede suceder que salte un error al momento de crear un nuevo proyecto o inicializar el server del proyecto, donde normalmente te pide que no reconoce al compilador de javascript, tienes que ejecutar las siguientes lineas.
fuente: https://github.com/sstephenson/execjs
  • gem install therubyracer
  • gem install execjs



Si en caso el error se mantiene entonces instalar el node.js
fuente: https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager

  • sudo apt-get install python-software-properties

  • sudo add-apt-repository ppa:chris-lea/node.js
  •  sudo apt-get update 

  • sudo apt-get install nodejs npm
     


Para comprobar que Ruby on Rails este bien instalado en tu terminal puedes comprobar con las siguientes lineas de comando


ruby -v ----------> la versión de Ruby
rails -v ----------> la versión de Rails
 
  

En las lineas anteriores  te muestran las versiones de lo que se instaló en tu sistema operativo.

Ahora ejecuta solo rails y si te sale las opciones que esta tiene entonces es un buen sintoma de que la instalación se realizó con éxito.


Ahora el siguiente paso es crear un proyecto básico y configurar un Netbeans para que soporte Ruby o en todo caso usar Sublime text 2

Nos vemos en el próximo post donde crearemos un proyecto







miércoles, 11 de abril de 2012

Crear proyecto Zend Framework con módulos

Hola,

Hace una semana me preguntaron como se crear proyectos en Zend totalmente modular, sabía que es posible así que le pase este pequeño tuto que lo hice una tarde libre en la chamba.

Antes de empezar supongo que debemos tener las librerias de Zend en nuestro server e  incluso como es mi caso tengo configurado con mi IDE Netbeans que será mi asistente en el camino como por ejemplo generar módulos, controladores, modelos, tables, forms, etc xD

Debo agradecer a aun amigo Jared  que me ayudo con algunas consultas sobre esto.

Ok, ahora creamos un proyecto Zend:





A continuación veremos el la estructura del proyecto que se generará automáticamente


Abrimos un navegador y ejecutamos el proyecto, en mi caso he creado una virtual, pero también podría ser http://localhost/testingzf/public y debería mostrar la siguiente imagen.



Hasta aquí ya tenemos un proyecto simple generado. Ahora vamos hacer que esto sea modular, iniciaré creando el modulo "default". Quiero hacer una aclaración al crear el modulo "default" y modificar el archivo ini con esto haremos que el framework cargue el modulo "default" en primera instancia.


Al ejecutar este comando nuestra estructura del proyecto debería quedar así:


Lo que sucedió fue que al ejecutar el comando para generar el modulo "default" se generó una carpeta llamada modules que tiene dentro la carpeta controllers, models y views vacíos todos. Ahora se movió los controllers de la carpeta Controllers que estaba en el mismo nivel de configs, modules. Así mismo también se movieron las carpetas error y index dentro de VIEWS a la carpeta script del modulo "default".

a continuación modificamos el archivo Application.ini que esta ubicada dentro de la carpeta configs que quedaría de la siguiente manera:



A continuación editamos el archivo Bootstrap.php que se encuentra dentro de la carpeta Application y debería quedar así:



Ahora editamos el IndexController y debería quedar de la siguiente manera


También  editamos la vista el archivo index.phtml


Nos vamos al navegador y debemos ver lo siguiente



Continuando generamos las clases para el modelo


En la imagen indico que deseo crear una clase user de mi tabla seg_user en el modulo "default", Esta generara una estructura que a continuación muestro



Le agregamos un método que retorne una cadena de texto, obviamente aquí podemos retornar elementos de la Base de Datos pero ese no es el tema.


Continuando, vamos a la carpeta Controllers de nuestro módulo "default" y editamos el IndexController  de a siguiente forma:



Imprimimos esa variable $this->modelo en nuestro index.phtnl de modulo y obtenemos en el navegador




Y así podemos seguir creando todos los módulos que nuestro proyecto llegue a tener, quizás alguien tiene otra forma de hacerlo, pero en primera instancia esta me parece más fácil.


saludos y espero sus aportes




martes, 3 de abril de 2012

xajax con Zend Framework

Holas, hace poco me llegó un proyecto ya trabajado en Zend en parte, en realidad se me pidió muchas cosas con ajax y jquery y tiempo es lo que menos tenía, así que traté de hacerlo con xajax en Zend tuve que leer un poquito (foros) consultar a unos amigos Joaquin Tarazona (jmike410@gmail.com) .

Bueno en realidad fue más fácil de lo que me imaginé, así que ahí va:

Paso 1:  Nos descargamos la librería XAJAX: http://xajaxproject.org/en/download/ esta carpeta contiene archivos PHP y JS, copiamos la carpeta "XAJAX" en el directorio "public":



Paso 2: Nos dirigimos a nuestro modulo default y al controlador index:


En este paso abrimos el archivo y agregamos lo siguiente:


En la Linea 1: es  para agregar la librería PHP de xajax, como observan lo busca dentro de public, probé copiando la carpeta xajax_core que es la que contiene los PHP's en la carpeta library de Zend y funciona bien, si lo deseas así solo tienen que quitar "../public/js/", pero si les gusta que todo esté en el cliente osea en el public déjenlo como muestra la imagen.

En la linea 16 llamo a mi método CargarXajax para iniciarla

Las lineas del 19 al 26 es importante porque me permite activar el debug y registrar los métodos que llamo en el layout y las que este se conectará en el controller.

Las lineas del 28 al 35 es el método que ente caso me enviará un mensaje "Mensaje con xajax" al div con el ID llamado "divMessage" ante cualquier evento que se programe en el layout.

Paso 3: Ahora nos dirigimos al layout y abrimos a la vista que corresponde el controlador para agregar el método que generara los scripts JS para que se conecte con nuestro controlador.


Abrimos el archivo:



Linea 2 llamamos a un método que imprimirá las llamadas a los archivos JS necesarios y los scrips que se necesiten:


Linea 5: es un mensaje de prueba desde el controlador  xD

Linea 7: creamos un evento onclick dentro de este llamo al método xajax_test() todos mis funciones debo prefijarlo con el "xajax_" se acuerdan que en mi controlador registré la funcion test y tengo un método test. Bueno la cosa es simple, solo creo mi función prefijado en mi layout, en mi controlador lo registro e inmediatamente creo el método para hacer el retorno de mi objResponse.

Linea8: es un tag de tipo DIV con un ID que me sirve de identificador para decirle en mi método test de mi controlado donde es que quiero imprimir mis cambios ajax.


Espero que les sirva de algo este pequeño fix


Un cordial saludo, comenten y toda recomendación es bienvenida.








viernes, 23 de marzo de 2012

implementar xajax en modulos de Joomla

Buenas tardes, estos meses estuve a full, pero bueno trataré de compartir más fix.

En esta oportunidad publico sobre una forma de implementar la librería xajax en un modulo de Joomla.

Primero tenemos que tener nuestro modulo de Joomla desarrollado, no voy a entrar en detalles de ello, por que es otro tema, pero desarrollar un modulo en Joomla es relativamente sencillo.

A veces nos piden hacer ciertas tareas en un determinado modulo de Joomla que normalmente se desarrollan con ajax para facilitarnos la vida existe xajax, pero que sucede un modulo de Joomla no se comporta como un componente de Joomla no trabaja con el modelo MVC, asi que es un poco diferente, los modulo de Joomla trabajan con clases abstractas, existen formas de trabajarlo como MVC, pero mayormente encontraremos que no es así y nos piden "right now" resolver el problema.

Nos descargamos la librería XAJAX: http://xajaxproject.org/en/download/

Paso 1: Ubicamos la libreria y lo guardamos en la carpeta "libraries" en la raiz de Joomla.





Paso2: Ubicamos el modulo que deseamos implementar el xajax  a continuación muestro la estructura de un modulo cualquiera que encontré. Solo trabajaremos en el layout  "default.php", si el modulo es trabajado en MVC otra forma sería la configuración. Entonces abrimos el archivo seleccionado a continuación.



Paso 3: Como sabrán el "default.php" normalmente es solo código PHP con algunos PHP's para iterarlos, pero basicamente HTML, así que en esta parte agregamos las siguientes lineas. Donde se ubicarán en la parte superior del archivo.



descripción:
- Las 5 primeras lineas de código  es el requerimiento de la librería, de ahí está la instancia a la clase xajax, la tercera linea es para configurar si queremos que esté en modo de debug (esto hará que salte un pop-up cada vez que se ejecute un método xajax), la sigueinte linea, atención a esto es muy importante aquí es donde se registra los metodos que utilizaras en el HTML debajo, noten que tengo comentado otro tipo de register eso es para cuando trabajemos con el modelo mvc donde nuestra vista sea una clase y no un simple HTML como este, y el último generar todo los metodos registrados al iniciar.

Al final hay un código: $xajax->printJavascript('libraries/xajax/'); esto sirve para mostrar tos javascripts en la vista que se generará.

Observamos el Metodo prueba() y observen que está registrado en la 4ta linea del código.
Lo que tenemos en el método prueba es básicamente lo que tendrán todos los métodos de trabajaremos con xajax
- Una instancia al response, y  este objeto response tiene muchos métodos que trabajarías con JS, en este caso solo usaré un alert xD

y al final retornamos el objResponse.

La llamada a este método dentro del HTML sería:




Siempre prefijado con xajax_mifuncion()

En el evento click este busca a la función JS generada y te salta un alert





Bueno espero que les sirva este pequeño fix.