GithubHelp home page GithubHelp logo

ruby_app's Introduction

Ruby App

An exercise to implement the requirements given below in order to test functionality, efficiency, readability and ability to use TDD and OO.

I have test driven the development of four separate classes, Parser, ViewManager, View and Formatter using the red-green-refactor cycle. I have kept the code DRY, with proper encapsulation and classes and methods adhere to the Single Responsibility Principle. I have injected dependencies and provided defaults where appropriate to ensure that the classes are open for extension but closed for modification.

Unit tests include test doubles and method stubs to effectively isolate the single class being tested and feature tests check correct integration behaviour between the classes. Test coverage is 100%.

I feel that the design meets the specified requirements, however if I had more time I would have considered extracting the file conversion into its own class. Although I have used a ruby method which is more memory efficient by reading the file line by line instead of loading them all at once, I should also deal with edge case scenarios that could arise such as blank lines in the file, more data than expected on each line, invalid data and not allowing file types which would crash the program to be passed in as an argument. I would also like to add the capability to read multiple files at a time and also improve the look of the output generated from running the script.

Requirements

Write a ruby script that:

a. Receives a log as argument (webserver.log is provided) e.g.: ./parser.rb webserver.log

b. Returns the following:

  • list of webpages with most page views ordered from most pages views to less page views e.g.: /home 90 visits /index 80 visits etc...
  • list of webpages with most unique page views also ordered e.g.: /about/2 8 unique views /index 5 unique views etc...

How to use

Clone the repo to your local machine, change into the directory and install the needed gems:

$ bundle install

To run the test suite:

$ bundle exec rspec

To run the script from the command line:

$ bin/parser webserver.log

Technologies used

  • Ruby
  • RSpec
  • SimpleCov

ruby_app's People

Contributors

anjanalp avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.