A Ruby on Rails developer is required for periodic jobs for the existing project. The new code should be adequately covered by appropriate tests. The source code of the project will be available on GitHub.
Here is a description of the project and the first job:
There is a site that is a "trainings catalog", in which the various organizers of education (training companies) publish their own events (courses, seminars, trainings) through a "personal account", and visitors can apply for training.
The site is written in Ruby on Rails (3.1.3). "Schedule", published by training companies, is defined by the following entities:
* Training - training program, which includes a description, cost, etc.
* Events - binding to a specific training date and place.
* Trainer - a coach (includes a description and a link to photo)
To automate the process of updating "schedule" has been developed XML-specific file format, containing all the necessary information (the list of training courses, events, and trainers). There is a description of the format and an XSD-file (XML Schema), with which you can check the XML-files for validity.
Develop functionality to automatically update the schedule with the help of the XML-file and compile tests (rspec + capybara) on the possible scenarios (for example, an invalid XML-file, forced to roll back, etc.)
In the administration section for each company there should be a possibility to specify the URL of the XML-file with the schedule, and then manually editing of the schedule in the private office of the company becomes unavailable (for example, on the training edit page the "Save" button can be disabled).
With the help of the whenever gem there should be added a cron-job to update the schedule every week (for example, at night from Sunday to Monday every 10 minutes there should be schedule update of one company).
Before schedule updating the XML-file should be checked for validity by XSD-file (it has already been developed).
After each update a copy of the XML-file should be saved, so if you want you can roll back the "schedule" to any version.
Add the ability to produce a "rollback" to previous versions.
After each schedule update to administrator's e-mail address should be sent an email with statistics of the update (how many new trainings was added, how many trainings was moved to the archive, how many trainings was changed their descriptions).
After each schedule update, based on generated statistics, there should be made automatic rollback to a previous version of the schedule if some of the unacceptable situations occured. Unacceptable situations: more than 30% of all the trainings has gone into the archive, because in the new XML-file, there was no information about these trainings, or more than 30% of all the trainings undergone a change (name or description was changed).