Curso Intermedio de Ruby on Rails

Clases del Curso Intermedio de Ruby on Rails

Instruido por:
Johan Tique
Johan Tique
Intermedio
6 horas de contenido
Ver la ruta de aprendizaje
Curso Intermedio de Ruby on Rails

Curso Intermedio de Ruby on Rails

Progreso del curso:0/34contenidos(0%)

Contenido del Curso
Tutoriales de estudiantes
Preguntas de estudiantes

Progreso del curso:0/34contenidos(0%)

Introducción

Material Thumbnail

Pasos para construir aplicaciones en Ruby on Rails

01:37 min

Material Thumbnail

Retomando nuestro proyecto

03:38 min

Material Thumbnail

Instalando MongoDB

13:21 min

Material Thumbnail

Migrando nuestra aplicación: componentes, librerías y configuraciones

10:17 min

Material Thumbnail

Migrando nuestra aplicación: modelos

08:35 min

Material Thumbnail

Migrando nuestra aplicación: modelos restantes y seeds

15:55 min

Pruebas

Material Thumbnail

¿Qué es TDD y BDD?

10:11 min

Material Thumbnail

Esteroides para tus pruebas

13:24 min

Construyendo nuestra fábrica de documentos de prueba

04:20 min

Material Thumbnail

Añadiendo pruebas de modelo

13:41 min

Material Thumbnail

Añadiendo pruebas de modelo: validación de datos

11:39 min

Material Thumbnail

Finalizando las pruebas de modelo

07:48 min

Material Thumbnail

Añadiendo pruebas de peticiones

10:54 min

Material Thumbnail

Creando y probando tareas de petición

12:39 min

Material Thumbnail

Añadiendo pruebas de sistema: interacción del sistema

13:35 min

Material Thumbnail

Añadiendo pruebas de sistema: comportamientos dinámicos

15:24 min

Interacción dinámica

Material Thumbnail

Selectize, esteroides para tus selects

09:27 min

Material Thumbnail

Retomando los formularios anidados

06:36 min

Material Thumbnail

Mejorando la asignación de participantes

14:50 min

Notificaciones

Material Thumbnail

Retomando las notificaciones del proyecto

04:43 min

Material Thumbnail

Introducción a Service Objects

09:00 min

Material Thumbnail

Construyendo prueba de servicio de notificación por correo

12:18 min

Material Thumbnail

Construyendo servicio de notificación por correo

13:04 min

Material Thumbnail

Introducción a procesos en background y Active Job

12:51 min

Material Thumbnail

Creando un Job para la notificación de correo

12:10 min

Ciclos de vida

Material Thumbnail

Introducción a máquinas de estado

07:32 min

Material Thumbnail

Creando máquina de estados para la tarea

13:37 min

Material Thumbnail

Creando servicio de gestión de estados de la tarea

08:37 min

Material Thumbnail

Actualizando estados usando eventos

10:43 min

Material Thumbnail

Modificando estados desde la interfaz

13:07 min

Cierre

Material Thumbnail

Optimizaciones: fundamentos

06:34 min

nuevosmás votadossin responder
Alejandro López Correa
Alejandro López Correa
Estudiante

¿por qué no se usó el factory de task que previamente se habia diseñado?

1
Harry Harry Suarez
Harry Harry Suarez
Estudiante

Tengo un error al hacer db:reset

Users has been created
rails aborted!
Mongoid::Errors::Validations: 
message:
  Validation of Task failed.
summary:
  The following errors were found: Participating users is invalid
resolution:Try persisting the document with valid data or remove the validations.

Dejo mis seeds

['alcides', 'kamila', 'angel', 'anyerlis', 'michael', 'edixon', 'carlos', 'keymar', 'joel'].eachdo |name|
    User.create(
        email: "#{name}@gmail.com", 
        password: '123456')
end 

puts 'Users has been created'
owner = User.find_by(email: '[email protected]')

info = [
    ['nis', 'armar planilla de amazon', ['1:1','2:2','3:random']],
    ['traduccion', 'traducir a aleman las categorias de beauty', ['4:1','5:2','6:random']],
    ['categorizacion', 'Categorizar los productos del cliente x', ['7:1','8:2','9:random']]
]

info.eachdo |category, description, participant_set|
    Category.create!(
        name: category,
        description: '--'
    )

    puts 'Category have been created'if Category.count == 3

    participants = participant_set.map do |participant|
        id, raw_role = participant.split(':')
        role = raw_role == 'random' ? [1,2].sample : raw_role

        Participant.new(
            user: User.find(id.to_i),
            role: role.to_i
        )
    end

    Task.create!(
        name: category,
        description: description,
        category: Category.find_by(name: category),
        due_date: Date.today + 2.days,
        owner: owner,
        participating_users: participants
    )
end

puts 'Task have been created'if Task.count == 3

Y mis modelos

classTask
  # moduleformondoidincludeMongoid::DocumentincludeMongoid::Timestampsfield :name, type: Stringfield :description, type: Stringfield :due_date, type: Datefield :code, type: Stringbelongs_to :categorybelongs_to :owner, class_name: 'User'

  has_many :participating_users, class_name: 'Participant', dependent: :destroy
  # has_many :participants, through: :participating_users, source: :userhas_many :notes, dependent: :destroyvalidates :name, :description, presence: truevalidates :name, uniqueness: {case_sensitive: false}
  validate :due_date_validity

  before_create :create_code
  after_create :send_email

  accepts_nested_attributes_for :participating_users, allow_destroy: true

  def participants
    participating_users.includes(:user).map(&:user)
  end

  def due_date_validity
    returnif due_date.blank?
    returnif due_date > Date.today
    errors.add :due_date, 'La fecha no puede estar en el pasado'
  end

  def create_code
    self.code = "#{owner_id}#{Time.now.to_i.to_s(36)}#{SecureRandom.hex(8)}"
  end

  def send_email
    returnreturn unless Rails.env.development?
    (participants + [owner]).each do |user|
      ParticipantMailer.with(user: user, task: self).new_task_mailer.deliver!
    end
  end
end

classUser# module for mondoidinclude Mongoid::Document
  include Mongoid::Timestamps
  # Include default devise modules. Others available are:# :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :validatable## Database authenticatable
  field :email,              type: String, default:""
  field :encrypted_password, type: String, default:""## Recoverable
  field :reset_password_token,   type: String
  field :reset_password_sent_at, type: Time

  ## Rememberable
  field :remember_created_at, type: Time

  ## Trackable# field :sign_in_count,      type: Integer, default: 0# field :current_sign_in_at, type: Time# field :last_sign_in_at,    type: Time# field :current_sign_in_ip, type: String# field :last_sign_in_ip,    type: String## Confirmable# field :confirmation_token,   type: String# field :confirmed_at,         type: Time# field :confirmation_sent_at, type: Time# field :unconfirmed_email,    type: String # Only if using reconfirmable## Lockable# field :failed_attempts, type: Integer, default: 0 # Only if lock strategy is :failed_attempts# field :unlock_token,    type: String # Only if unlock strategy is :email or :both# field :locked_at,       type: Time

  has_many :owned_tasks, class_name:'Task'
  has_many :participations, class_name:'Participant'# has_many :tasks, through: :participationsdeftasks
    participations.includes(:task).map(&:task)
  endend
1
Harry Harry Suarez
Harry Harry Suarez
Estudiante

Abri mi application.rb y no estaban esos require que se muestran al principio del video.

0
Carlos Esteban León Pinilla
Carlos Esteban León Pinilla
Estudiante

¿Por qué usar el sistema de jobs que se plantea en el curso en vez de usar una tarea y programarla con la gema whenever para hacerlo como cron job?
¿Es lo mismo?

0
Alvaro Alvarez
Alvaro Alvarez
Estudiante

Siempre que se van a ejecutar las pruebas o ejecutar la aplicación hay que correr el servidor de mongo con la version instancia utilizando el manejador m? hay forma de dejarlo como demonio utilizando el manejador de versiones?

1
JOSE ESTRADA
JOSE ESTRADA
Estudiante

¿Esta guia tambien puede ser utilizada para configurar el gestor de versiones de MongoDB en Mac?

1
Sebastian Kloster
Sebastian Kloster
Estudiante

Cuando ejecuto las pruebas estoy creando un nuevo user con let y usando la factory. Este nuevo User queda persistido en la base de datos? Podria esto ser un problema?

1
Sebastian Kloster
Sebastian Kloster
Estudiante

Hola a todos!
Tengo problemas al intentar hacer las preubas del modelo User, por un lado, me dice que la password no puede estar en blanco, sin embargo yo crei que esta se generaba en el controller de Devise al momento de hacer el new.
Por otro lado, me dice que las owned_tasks y las participations son invalidas.
Les adjunto imagenes de las pruebas y de la falla.
Screenshot from 2020-09-14 10-04-35.png

Muchas gracias!!

0
Sebastian Kloster
Sebastian Kloster
Estudiante

Hola!
Una pregunta, solo puedo tener un subject por contexto?
Gracias!

1
Sebastian Kloster
Sebastian Kloster
Estudiante

No entendi muy bien porque crear un nuevo grupo de pruebas cuando se podria usar el grupo de pruebas de development.

2