Skip to content

Instantly share code, notes, and snippets.

@olvap
Last active August 29, 2015 14:01
Show Gist options
  • Select an option

  • Save olvap/77a7b0dcc2e630f523e1 to your computer and use it in GitHub Desktop.

Select an option

Save olvap/77a7b0dcc2e630f523e1 to your computer and use it in GitHub Desktop.
Tutoria.rb

Objetivo:

Generar una nueva funcionalidad en el proyecto https://github.com/bluelemons/archivo

Modalidad

La idea es que una vez a la semana se defina un objetivo y lo discutamos entre todos, cada uno debe investigar por su cuenta. Si se traban en algo o no saben como seguir lo discutimos en persona o por chat. No se asusten si no saben algo, son muchas cosas y puede parecer super difícil pero todo está documentado o lleno de alternativas.

Parte 0

Para tener antes de empezar.

  • Tener una compu/pc/notebook con Linux instalado.
  • Instalar git

sudo apt-get install git

  • Instalar RVM o Rbenv o el paquete de ruby que viene con el linux que se instalen.

Mediante paquete

sudo apt-get install ruby

Primera parte

Ejercicios Ruby

Blog:

  • Post(title:string, body:text)
  • Comment(body:text, author:string, post_id:belongs_to)

Tiene que poder hacerse un CRUD de Post y cada Post tiene que poder comentarse.

Archivo:

Vamos a crear una aplicación de rails que va servir de base para todas las funcionalidades que vamos a crear. Esta apliación va servir de backend(adminstrador) de una serie de registros. Framework: rails (el que se siente intrépido puede usar otra cosa) http://guides.rubyonrails.org/getting_started.html

Estos registros van a ser

  • Person(name:string, dni_number:string)
  • FileRecord(title:string)
  • Office(name:string)
  • Step(office:belongs_to, record_id:belongs_to, person_id:belongs_to)
1. Hacer el CRUD de Person, FileRecord y Office.
2. Implementar en Step un metodo de clase #start, que cree un Step en la Oficina, "mesa de entrada" y si no existe que la cree primero.

ej:

    # Crea una nueva instancia de step que tiene la oficina "mesa de entrada"
    step = Step.start
    step.office.name -> "mesa de entrada"
3. Implementar otro método #archive, que cree un Step en la Oficina "Archivo" y si no existe la oficina la cree.

ej:

    step = Step.archive
    step.office.name -> "Archivo"
4. Implementar que cuando se cree el FileRecord se invoque al metodo start de Step.

ej:

    file_record = FileRecord.create
    file_record.steps.first.office.name -> "mesa de entrada"
5. Mostar todos los steps de una instancia de FileRecord en el show de FileRecord.
6. En el formulario del show de FileRecord se tiene que poder agregar nuevos steps al FileRecord en cuestión seleccionando una oficina en particular.
7. Agregar una nueva accion a FileRecordController#archive, que archive el mismo usando el método archive de step.

Segunda Parte

Agregamos la funcionalidad de autenticación. Para que los registros puedan ser manipulados, vamos a crear que un usuario pueda registrarse y/o logearse en la aplicación.

From Scratch.

En la applicación de Blog vamos a crear un nuevo resource para los usuarios

rails g controller users new
rails g model user email:string password_hash:string
rake db:migrate

Tenemos que crear una ruta /sign_up que muestre un formulario para poder guardar un nuevo registro de usuario. La clave tiene que guardarse encryptada. ej:

passwors_hash = Digest::MD5.digest("some password") # Encrypta la password.

Una vez que tenemos el sign_up completo, creamos el login. Hacemos un controllador, SessionsController que tiene una acción que maneja al session.

rails g controller sessions new

dentro de la acción new, en su vista, creamos un formulario donde pedimos email y password para que sea redirijido al create del mismo controlador. Dentro del create, preguntamos a la clase user si hay un usuario con ese mail y esa password. Si lo hay guardamos en session, el id del dicho usuario.

Agregar los befora actions que impida que se pueda salvar blogs cuando el usuario no está logeado.

Agregar la funcionalida de logout.

Tercera Parte

Agregamos un FrontEnd mas lindo

  • Gemas: railsbackend (o puede ser ActiveAdmin)

Cuarta Parte

Agregamos controladores para acceder a los recursos por medio de un API

  • Gemas: Doorkeeper(o autenticacion por token)
  • Recursos: Investigar OAuth2 (Depende de que usemos)

Quinta parte

Agregar un cliente a la aplicación(preferentemente en JS)

Sexta Parte

Agregar una funcionalidad a Elección que debe elegir cada uno.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment