Second Week Experience at Saeloun

Second Week Experience & Learning

I began my first week at work writing a blog on my overall experience of the previous week. Then, I continued with my project - Leave Management System to track the leaves of employees in an organization.

This project is subdivided into nineteen small tasks or issues to further streamline the process and minimize areas of errors. I began working on issue 3 that involved building Continuous Integration(CI) using GitHub Action. CI is a coding philosophy and set of practices that drive development teams to implement small changes and push/merge those changes frequently. While these changes are already validated at the time they are pushed, it is also ensured that the changes are in line with the overall task.

Thereafter, I raised a PR(Pull Request) for the same issue, and after minor modifications and updates, my work was finally approved and merged with the main branch.

In my next task, I created a user model using Devise Gem. Devise Gem is a popular and reliable gem in Ruby on Rails community used for authentication. As I was new to this framework, I went through its documentation and watched a couple of videos on YouTube to get the hang of it. Finally, I built the User Model and added a couple of fields within the system by creating migration. A Rails migration is a tool for changing an application’s database schema. Instead of managing SQL scripts, you define database changes in a domain-specific language (DSL).

Apart from this, I also worked on adding testing for our User model, specifically using Unity testing. We use testing because with tests we can ensure that our code adheres to the desired functionality even after some major code refactoring. Later, I used a popular gem called factory bot for automated testing along with faker gem, used for creating fake dates for our factory bot gem.

Another interesting stuff I worked on was adding a new field called “Role” using enum within the Leave management System. An enum is a data type made out of a set of named values. Here, the value of the field is set as “employees”, i.e. all the Users created are going to be employees by default in the ‘Role’ field.

Finally, I raised a PR to get all these iterations approved. Once they were approved, I merged the changes and it was deployed to production. Apart from this, I also learned how to work on Tailwind CSS to create and design the front-end of our project.

This past week I have been focused on improving my knowledge of front-end frameworks. I have gained a solid understanding of how to use the Tailwind CSS framework to speed up my development. In addition, I have been working on a project that involves using the Devise Gem framework and Enum. I am enjoying using these frameworks and I am looking forward to using them in future projects.

Join Our Newsletter