From cc9d0defca12543f52fa09e286c732d42e08969c Mon Sep 17 00:00:00 2001 From: Rohan Mitchell Date: Thu, 23 Jul 2015 11:04:36 +1000 Subject: [PATCH] Use class attributes instead of class variables to avoid leakage between subclasses --- lib/open_food_network/reports/report.rb | 18 ++++++++++-------- .../open_food_network/reports/report_spec.rb | 2 +- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/lib/open_food_network/reports/report.rb b/lib/open_food_network/reports/report.rb index b23f77eeeb..7ddd9ebeeb 100644 --- a/lib/open_food_network/reports/report.rb +++ b/lib/open_food_network/reports/report.rb @@ -3,20 +3,22 @@ require 'open_food_network/reports/rule' module OpenFoodNetwork::Reports class Report + class_attribute :_header, :_columns, :_rules_head + # -- API def header - @@header + self._header end def columns - @@columns.to_a + self._columns.to_a end def rules # Flatten linked list and return as hashes rules = [] - rule = @@rules_head + rule = self._rules_head while rule rules << rule rule = rule.next @@ -28,17 +30,17 @@ module OpenFoodNetwork::Reports # -- DSL def self.header(*columns) - @@header = columns + self._header = columns end def self.columns(&block) - @@columns = Row.new - @@columns.instance_eval(&block) + self._columns = Row.new + self._columns.instance_eval(&block) end def self.organise(&block) - @@rules_head = Rule.new - @@rules_head.instance_eval(&block) + self._rules_head = Rule.new + self._rules_head.instance_eval(&block) end end end diff --git a/spec/lib/open_food_network/reports/report_spec.rb b/spec/lib/open_food_network/reports/report_spec.rb index e56a283332..71d5ba28fc 100644 --- a/spec/lib/open_food_network/reports/report_spec.rb +++ b/spec/lib/open_food_network/reports/report_spec.rb @@ -34,7 +34,7 @@ module OpenFoodNetwork::Reports describe Report do let(:report) { TestReport.new } - let(:rules_head) { TestReport.class_variable_get(:@@rules_head) } + let(:rules_head) { TestReport._rules_head } let(:data) { {one: 1, two: 2, three: 3, four: 4} } it "returns the header" do