मैंने एक प्लगइन लिखा है जो नवीनतम मुद्दों को पकड़ता है और उन्हें होम पेज पर प्रदर्शित करता है। सब कुछ अच्छी तरह से काम करता प्रतीत होता है, लेकिन यह केवल पहली बार काम करता है जब मैं इसे चलाने के लिए सर्वर को पुनरारंभ करता हूं - उसके बाद यह उस समय के मुद्दों को कैश करता है, और कोई भी नया नहीं मिलता है।समस्याएं बदलते समय Redmine प्लगइन दृश्य हुक रीफ्रेश करें
मैं इसके बारे में कुछ पढ़ रहा हूं, और ऐसा लगता है कि मुझे अपनी प्लगइन में अतिरिक्त कार्यक्षमता जोड़ने के लिए मुद्दों के लिए एक पैच लिखना चाहिए। क्या यह सच है? यदि हां, तो मुझे after_save
कार्रवाई में क्या जोड़ना चाहिए? नवीनतमपोस्ट्ससेट मॉडल के लिए भी ऐसा ही होता है - यदि मैं अधिकतम गणना के लिए मानों को बदलता हूं और जिस पर इसे प्रदर्शित किया जाना चाहिए, तो होम पेज तब तक इसे प्रतिबिंबित नहीं करता जब तक कि मैं सर्वर को पुनरारंभ नहीं करता।
क्षमा करें अगर यह प्रश्न काफी मामूली लगता है, तो मैं रूबी के लिए नया हूं।
module LatestPosts
class ViewHookListener < Redmine::Hook::ViewListener
require 'plugins/latest_posts/app/models/latest_posts_setup.rb'
setup = LatestPostsSetup.find_by_id(1)
if setup == nil
count = LatestPostsSetup::DEFAULT_COUNT
side = LatestPostsSetup::DEFAULT_SIDE
else
count = setup.max_count
side = setup.side
end
issues = Issue.find(:all, :limit => count, :order => "created_on DESC")
if side == 'left'
render_side = :view_welcome_index_left
else
render_side = :view_welcome_index_right
end
render_on render_side, :locals => {:issues => issues}, :partial => "latest_issues/issues"
end end
संपादित
मैं अब फ्लाई पर एचटीएमएल प्रस्तुत करना दृश्य सहायक बदल गया है, और मैं नए मुद्दों के लिए अपाचे पुनः आरंभ करने की जरूरत नहीं है: कृपया नीचे दृश्य सहायक कोड की खोज प्रदर्शित होने के लिए, मुझे समझ में नहीं आता कि यह HTML टेम्पलेट का उपयोग करने पर क्यों काम करेगा? कृपया नीचे दिए गए कोड:
# lib/latest_posts_hook_listener.rb
module LatestPosts
class ViewHookListener < Redmine::Hook::ViewListener
def view_welcome_index_left(context={})
setup = load_setup()
if setup[:side] == "left"
load_issues(setup[:count])
end
end
def view_welcome_index_right(context={})
setup = load_setup()
if setup[:side] == "right"
load_issues(setup[:count])
end
end
def load_setup()
require 'plugins/latest_posts/app/models/latest_posts_setup.rb'
setup = LatestPostsSetup.find_by_id(1)
if setup == nil
count = LatestPostsSetup::DEFAULT_COUNT
side = LatestPostsSetup::DEFAULT_SIDE
else
count = setup.max_count
side = setup.side
end
{:count => count, :side => side}
end
def load_issues(count)
html = '<div class="box" id="statuses">'
html += '<h3 class="icon22 icon22-users">Latest Issues</h3><ul>'
issues = Issue.find(:all, :limit => count, :order => "created_on DESC")
issues.each do |issue|
html += <<EOHTML
<li>
#{link_to h(truncate(issue.subject, :length => 60)), :controller => 'issues', :action => 'show', :id => issue } (#{ format_date(issue.created_on) })
</li>
EOHTML
end
html += '</ul></div>'
return html
end
end
end
प्रतिक्रिया के लिए धन्यवाद, लेकिन यह यह हो प्रतीत नहीं होता है। मैंने 'render_on: view_welcome_index_right बदल दिया: locals => {: issues => issues},: partial =>" latest_issues/issues "' और परिणाम वही था। जिन मुद्दों को मैं प्रदर्शित करना चाहता हूं उनकी गिनती डेटाबेस में बदलावों से प्रभावित नहीं थी। –