Skip to content

Commit 4f20bc6

Browse files
committed
refs #40 fixing memory leak
1 parent 26952d6 commit 4f20bc6

File tree

3 files changed

+49
-6
lines changed

3 files changed

+49
-6
lines changed

lib/redmine_resource_manager/issue_patch.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ def issue_human_resource_item_names
2424
cached_items = instance_variable_get("@issue_human_resource_items")
2525
if !cached_items.nil?
2626
IssueResourceItemsPresenter.new(cached_items).to_s
27+
#instance_variable_set("@issue_human_resource_items", nil)
2728
else
2829
IssueResourceItemsPresenter.new(issue_human_resource_items).to_s
2930
end
@@ -32,6 +33,7 @@ def issue_asset_resource_item_names
3233
cached_items = instance_variable_get("@issue_asset_resource_items")
3334
if !cached_items.nil?
3435
IssueResourceItemsPresenter.new(cached_items).to_s
36+
#instance_variable_set("@issue_asset_resource_items", nil)
3537
else
3638
IssueResourceItemsPresenter.new(issue_asset_resource_items).to_s
3739
end

lib/redmine_supply/issue_supply_items_presenter.rb

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,7 @@ def to_s
2222

2323
def issue_supply_item_tag(issue_supply_item)
2424
item = issue_supply_item.supply_item
25-
# TODO: improve prealod cache logic
26-
unit_name = @scope.nil? ? item.custom_values.first.value : item.unit_name
27-
"#{h item.name} (#{h issue_supply_item.quantity} #{h unit_name})"
25+
"#{h item.name} (#{h issue_supply_item.quantity} #{h item.unit_name})"
2826
end
2927
end
3028
end

lib/redmine_supply/patches/issue_patch.rb

Lines changed: 46 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ def issue_supply_item_names
2525
cached_items = instance_variable_get("@issue_supply_items")
2626
if !cached_items.nil?
2727
IssueSupplyItemsPresenter.new(cached_items).to_s
28+
#instance_variable_set("@issue_supply_items", nil)
2829
else
2930
IssueSupplyItemsPresenter.new(issue_supply_items).to_s
3031
end
@@ -72,7 +73,30 @@ def load_issue_supply_items(issues, user=User.current)
7273
order(:issue_id).
7374
order("#{SupplyItem.table_name}.name ASC").to_a
7475
issues.each do |issue|
75-
issue.instance_variable_set "@issue_supply_items", _issue_supply_items.select {|s| s.issue_id == issue.id}
76+
issue.instance_variable_set "@issue_supply_items",
77+
_issue_supply_items.select {|s| s.issue_id == issue.id}.
78+
map{|isi|
79+
IssueSupplyItem.new(
80+
id: isi.id,
81+
issue: issue,
82+
supply_item: SupplyItem.new(
83+
id: isi.supply_item.id,
84+
project: issue.project,
85+
name: isi.supply_item.name,
86+
description: isi.supply_item.description,
87+
unit: isi.supply_item.unit,
88+
stock: isi.supply_item.stock,
89+
custom_values: [CustomValue.new(
90+
id: isi.supply_item.custom_values.first.id,
91+
customized_type: "SupplyItem",
92+
customized_id: isi.supply_item.custom_values.first.customized_id,
93+
custom_field_id: isi.supply_item.custom_values.first.custom_field_id,
94+
value: isi.supply_item.custom_values.first.value
95+
)]
96+
),
97+
quantity: isi.quantity
98+
)
99+
}.compact
76100
end
77101
end
78102
end
@@ -84,7 +108,19 @@ def load_issue_human_resource_items(issues, user=User.current)
84108
where(resource_items: {type: "Human"}).
85109
where(:issue_id => issue_ids).to_a
86110
issues.each do |issue|
87-
issue.instance_variable_set "@issue_human_resource_items", _issue_human_resource_items.select {|h| h.issue_id == issue.id}
111+
issue.instance_variable_set "@issue_human_resource_items",
112+
_issue_human_resource_items.select {|h| h.issue_id == issue.id}.
113+
map{|iri|
114+
IssueResourceItem.new(
115+
issue: issue,
116+
resource_item: Human.new(
117+
id: iri.resource_item.id,
118+
category_id: iri.resource_item.category_id,
119+
name: iri.resource_item.name,
120+
project: issue.project
121+
)
122+
)
123+
}.compact
88124
end
89125
end
90126
end
@@ -96,7 +132,14 @@ def load_issue_asset_resource_items(issues, user=User.current)
96132
where(resource_items: {type: "Asset"}).
97133
where(:issue_id => issue_ids).to_a
98134
issues.each do |issue|
99-
issue.instance_variable_set "@issue_asset_resource_items", _issue_asset_resource_items.select {|a| a.issue_id == issue.id}
135+
issue.instance_variable_set "@issue_asset_resource_items",
136+
_issue_asset_resource_items.select {|a| a.issue_id == issue.id}.
137+
map{|iri|
138+
IssueResourceItem.new(
139+
issue: issue,
140+
resource_item: Asset.new(name: iri.resource_item.name)
141+
)
142+
}.compact
100143
end
101144
end
102145
end

0 commit comments

Comments
 (0)