viernes, 28 de agosto de 2015

Como crear un API con Grape y Rails

Configuracion

Primeramente necesitas tener grape en tu Gemfile

para esto solo necesitas agregar gem 'grape'
tan facil como quitarle un dulce a un niño :D


Ahora, rails necesitare cargar los archivos, por eso necesitamos modificar config/application.rb
con lo siguiente:

    config.paths.add File.join('app', 'api'), glob: File.join('**', '*.rb')
    config.autoload_paths += Dir[Rails.root.join('app', 'api', '*')]

Y en config/routes.rb, puesto que queremos las rutas /api/..../....
  mount API => '/'

Necesitamos crear una carpeta dentro de app llamada api, dentro de esta crearemos una clase API
donde podemos configurar algunas opciones como el tipo de formato, version, prefijo y otros mas que se pueden encontrar en su documentacion.

app/api/api.rb

class API < Grape::API
  prefix :api
  format :json

  mount ::V1::Base
end

Ahora crearemos una carpeta llamada v1, o la version que tu quieras, dentro de ella creemos un archivo llamado base.rb, en este encapsularemos todas las clases que estemos usando para esta version.

app/api/v1/base.rb

module V1
  class Base < API
    mount UsersController
  end
end


Despues dentro de esta misma agregaremos un archivo, en este caso yo lo llame UsersController, ya que si solo dejaba User, habia conflictos con el modelo User.

app/api/v1/users_controller.rb

module V1
  class UsersController < Grape::API

    desc 'Returns all users'
    get :users do
       User.all
    end

  end
end

Solo es un ejemplo de un simple get, pero proximamente ire publicando como es que ha ido creciendo la app.


Diviertanse!!! :D

lunes, 7 de octubre de 2013

Euler tenemos un problema



Hola, me acabo de encontrar un problemilla que emplea iteradores de una manera fácil y sobre todo ahorra mucho código


En concreto es este

Description:
If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23.
Finish the solution so that it returns the sum of all the multiples of 3 or 5 below the number passed in

Descripcion:
 Si listamos todos los números naturales menores a 10 que son de 3 o 5, obtenemos 3,5,6 y 9. La suma de estos múltiplos es 23.
Termina la solución para que devuelva a suma de los múltiplos de 3 y 5 menores a un numero dado.

Mi solución fue esta

def solution(number)
  mul = (1...number).select { |n| n % 3 == 0 or n % 5 == 0}
  mul.inject(:+)
end


Y eso es todo, en otro lenguaje como C y sus derivados me hubiese llevado muchas mas lineas, no lo creen?

Este y otros problemas están disponibles en Project Euler, de que otra forma se les ocurre resolverlo? hubiese dejado todo en una sola linea pero  me parecía que podría volverse ilegible, ustedes que piensan?

domingo, 28 de julio de 2013

Como implementar AngularJS en Ruby on Rails



Debido a que la mayoría de la documentación, información y/o ejemplos que encuentro en linea esta en ingles, lo cual no me molesta pero no es mi lengua madre, he decidido escribir este blog con la finalidad de poner ejemplos sencillos y fáciles de entender e implementar, para dummies.

Si yo puedo aprenderlo te aseguro que tu también :D

Vamos al grano.

Primero necesitamos crear una aplicación (app) en Rails - si ya tienes creado uno sáltate este paso

$ rails new nombre_de_mi_app

Después necesitamos descargar AngularJS en la siguiente dirección

http://angularjs.org/

Ahora vamos a la carpeta de nuestra aplicación y localizamos la siguiente ruta

app/assets/javascript

y en esa carpeta pegamos el archivo de AngularJS, que se llamara algo así como angular.min.js



Y eso ha sido todo, ya puedes empezar a utilizar AngularJS en tu aplicación, espero poder incluir pronto un ejemplo.

Si te gusta experimentar intenta recrear los ejemplos que se encuentran en la pagina oficial de angular

Au revoir!