CSC/ECE 517 Fall 2014/oss E1467 nms: Difference between revisions
(Created page with "=Expertiza - Refactoring SurveyResponsesController= __TOC__ ==Introduction== Expertiza<ref name="expertiza>''Expertiza'' http://wikis.lib.ncsu.edu/index.php/Expertiza</ref> is ...") |
|||
(6 intermediate revisions by the same user not shown) | |||
Line 4: | Line 4: | ||
==Introduction== | ==Introduction== | ||
Expertiza<ref name="expertiza>''Expertiza'' http://wikis.lib.ncsu.edu/index.php/Expertiza</ref> is an open source web portal for the use of both students and professors. | Expertiza<ref name="expertiza>''Expertiza'' http://wikis.lib.ncsu.edu/index.php/Expertiza</ref> is an open source web portal for the use of both students and professors. Expertiza allows us to create reusable learning objects through peer review. It allows project submission, team creation and the submission of almost any document type, including URLs and wiki pages. Students can access their pending and finished assignments, they can do peer reviews on several topics and projects. It is developed on Ruby on Rails platform. More information on Expertiza can be found [https://github.com/expertiza/expertiza here]. The source code has been forked and cloned for making modifications to the to survey responses controller. | ||
This wiki provides an insight into our contributions to the OSS Expertiza application, focusing on Refactoring the SurveyResponses Controller. | This wiki provides an insight into our contributions to the OSS Expertiza application, focusing on Refactoring the SurveyResponses Controller. | ||
==Project Description== | ==Project Description== | ||
This class creates surveys and records the responses which can be viewed. On submitting the responses, the scores and comments are posted. | This class creates surveys and records the responses which can be viewed. On submitting the responses, the scores and comments are posted. | ||
<b>Classes :</b> SurveyResponsesController.rb<br> | <b>Classes :</b> SurveyResponsesController.rb<br> | ||
Line 50: | Line 49: | ||
===Move active record queries to the model or another class=== | ===Move active record queries to the model or another class=== | ||
Controllers are best at parsing the inputs, they call the appropriate models, and then format the outputs. It is desirable to have a skinny controller responsible for parsing inputs and models doing actual validation. A bunch of Active Record queries that existed in survey_responses_controller have been moved to SurveyResponse model. | |||
Before Refactoring: | |||
survey_responses_controller.rb | |||
<pre> | |||
#view_responses | |||
if !params[:course_eval] | |||
surveylist = SurveyResponse.where( ["assignment_id = ? and survey_id = ?", params[:id], survey.id]) | |||
else | |||
surveylist = SurveyResponse.where( ["survey_deployment_id = ? and survey_id = ?", params[:id], survey.id]) | |||
</pre> | |||
After Refactoring: | |||
survey_responses_controller.rb | |||
SurveyResponse.get_survey_list and SurveyResponse.get_survey_list_with_deploy_id methods have been created in SurveyResponse model for active record operations. | |||
<pre> | |||
#view_responses | |||
if !params[:course_eval] | |||
survey_list = SurveyResponse.get_survey_list(params[:id], survey.id) | |||
else | |||
survey_list = SurveyResponse.get_survey_list_with_deploy_id( params[:id], survey.id) | |||
</pre> | |||
<references/><br> |
Latest revision as of 21:54, 27 October 2014
Expertiza - Refactoring SurveyResponsesController
Introduction
Expertiza<ref name="expertiza>Expertiza http://wikis.lib.ncsu.edu/index.php/Expertiza</ref> is an open source web portal for the use of both students and professors. Expertiza allows us to create reusable learning objects through peer review. It allows project submission, team creation and the submission of almost any document type, including URLs and wiki pages. Students can access their pending and finished assignments, they can do peer reviews on several topics and projects. It is developed on Ruby on Rails platform. More information on Expertiza can be found here. The source code has been forked and cloned for making modifications to the to survey responses controller.
This wiki provides an insight into our contributions to the OSS Expertiza application, focusing on Refactoring the SurveyResponses Controller.
Project Description
This class creates surveys and records the responses which can be viewed. On submitting the responses, the scores and comments are posted.
Classes : SurveyResponsesController.rb
What it does : Creates surveys, submitting surveys, views responses, posts scores and comments.
What has to be changed :
- Pluralize the class SurveyResponseController to SurveyResponsesController
- Changing declarations of Arrays and Hashes,removing commented out code
- Use of routing helpers instead of hardcoded URLs
- Move active record queries to the model or another class
- Reducing the number of instance variables per action to one
Modification to Existing Code
Pluralize the SurveyResponseController class to SurveyResponsesController
- A new survey_responses_controller.rb file is added : As per Ruby on Rails convention, controller names get pluralized while model names are singular. So, the controller name becomes survey_responses_controller instead of survey_response_controller for SurveyResponse modelclass.
Changing declarations of Arrays and Hashes as per Ruby 1.9 standards
- Modified declarations of Arrays and Hashes
Before Refactoring : survey_responses_controller.rb
#view_responses @responses = Array.new #view_responses this_response_survey = Hash.new
After Refactoring :
#view_responses @responses = [] #view_responses this_response_survey = {}
Move active record queries to the model or another class
Controllers are best at parsing the inputs, they call the appropriate models, and then format the outputs. It is desirable to have a skinny controller responsible for parsing inputs and models doing actual validation. A bunch of Active Record queries that existed in survey_responses_controller have been moved to SurveyResponse model.
Before Refactoring: survey_responses_controller.rb
#view_responses if !params[:course_eval] surveylist = SurveyResponse.where( ["assignment_id = ? and survey_id = ?", params[:id], survey.id]) else surveylist = SurveyResponse.where( ["survey_deployment_id = ? and survey_id = ?", params[:id], survey.id])
After Refactoring: survey_responses_controller.rb SurveyResponse.get_survey_list and SurveyResponse.get_survey_list_with_deploy_id methods have been created in SurveyResponse model for active record operations.
#view_responses if !params[:course_eval] survey_list = SurveyResponse.get_survey_list(params[:id], survey.id) else survey_list = SurveyResponse.get_survey_list_with_deploy_id( params[:id], survey.id)
<references/>