The Refactoring Today I refactored the conditional of StuffToDo#conditions_for_available using a little known library in Redmine called ARCondition. Before 1 2 3 4 5 6 7 8 9 10 11 12 13 # app/models/stuff_to_do.rb class StuffToDo < ActiveRecord::Base def self.conditions_for_available(filter_by, record_id) case filter_by when :user ["assigned_to_id = ? AND #{IssueStatus.table_name}.is_closed = ?", record_id, false ] …
Tag: extract-method
Daily Refactor #40: Extract Method in StuffToDo#available
The Refactoring Working on the flay report for StuffToDo I tackled the #available method this morning. Before 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 # app/models/stuff_to_do.rb class StuffToDo :status, :conditions => ["assigned_to_id = ? AND …
Daily Refactor #38: Extract Method in StuffToDo
Since I’m planning to release an update to my StuffToDo plugin next, I decided it could use a week of refactoring in order to clean it up. The Refactoring Since this plugin doesn’t have a lot of code (349 lines), there aren’t as many code smells as in the Redmine core. But according to Caliper …
Daily Refactor #37: Extract Method to Query#sortable_columns
The Refactoring I’m still going off of the flay report for today, this time I’m tackling some duplication in the IssuesController. Before 1 2 3 4 5 6 7 8 9 10 11 12 13 # app/controller/issues_controller.rb class IssuesController "#{Issue.table_name}.id"}.merge(@query.available_columns.inject({}) {|h, c| h[c.name.to_s] = c.sortable; h})) # ... end def changes retrieve_query sort_init 'id', …
Daily Refactor #33: Extract Method in IssuesController
I’ve decided to try something different with the next refactorings. Instead of working on a single section of code until it’s very well factored, I’m going to jump around a bit and tackle the sections that smell the worst. This will be good because I can work in different sections of Redmine and remove the …