redmine_mail_reminder
redmine_mail_reminder copied to clipboard
uninitialized constant MailReminderMailer::SortCriteria during test
I got the following error when executing "sudo docker exec -it redmine-app bundle exec rake reminder:exec[test] RAILS_ENV=production --trace"
Project "配置管理" with query "test" is forced processing under [test] mode. rake aborted! uninitialized constant MailReminderMailer::SortCriteria /home/redmine/redmine/plugins/redmine_mail_reminder/app/models/mail_reminder_mailer.rb:34:in
block in issues_reminder' /usr/lib/ruby/2.3.0/set.rb:306:in
each_key' /usr/lib/ruby/2.3.0/set.rb:306:ineach' /home/redmine/redmine/plugins/redmine_mail_reminder/app/models/mail_reminder_mailer.rb:31:in
issues_reminder' /home/redmine/redmine/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.8/lib/abstract_controller/base.rb:198:inprocess_action' /home/redmine/redmine/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.8/lib/abstract_controller/callbacks.rb:20:in
block in process_action' /home/redmine/redmine/vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.8/lib/active_support/callbacks.rb:88:in__run_callbacks__' /home/redmine/redmine/vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.8/lib/active_support/callbacks.rb:778:in
_run_process_action_callbacks' /home/redmine/redmine/vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.8/lib/active_support/callbacks.rb:81:inrun_callbacks' /home/redmine/redmine/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.8/lib/abstract_controller/callbacks.rb:19:in
process_action' /home/redmine/redmine/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.8/lib/abstract_controller/base.rb:137:inprocess' /home/redmine/redmine/vendor/bundle/ruby/2.3.0/gems/actionview-4.2.8/lib/action_view/rendering.rb:30:in
process' /home/redmine/redmine/vendor/bundle/ruby/2.3.0/gems/actionmailer-4.2.8/lib/action_mailer/base.rb:596:inblock in process' /home/redmine/redmine/vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.8/lib/active_support/notifications.rb:164:in
block in instrument' /home/redmine/redmine/vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.8/lib/active_support/notifications/instrumenter.rb:20:ininstrument' /home/redmine/redmine/vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.8/lib/active_support/notifications.rb:164:in
instrument' /home/redmine/redmine/vendor/bundle/ruby/2.3.0/gems/actionmailer-4.2.8/lib/action_mailer/base.rb:593:inprocess' /home/redmine/redmine/vendor/bundle/ruby/2.3.0/gems/actionmailer-4.2.8/lib/action_mailer/base.rb:584:in
initialize' /home/redmine/redmine/vendor/bundle/ruby/2.3.0/gems/actionmailer-4.2.8/lib/action_mailer/message_delivery.rb:25:innew' /home/redmine/redmine/vendor/bundle/ruby/2.3.0/gems/actionmailer-4.2.8/lib/action_mailer/message_delivery.rb:25:in
getobj' /home/redmine/redmine/vendor/bundle/ruby/2.3.0/gems/actionmailer-4.2.8/lib/action_mailer/message_delivery.rb:34:inmessage' /home/redmine/redmine/vendor/bundle/ruby/2.3.0/gems/actionmailer-4.2.8/lib/action_mailer/message_delivery.rb:85:in
deliver_now' /home/redmine/redmine/config/initializers/10-patches.rb:163:indeliver' /home/redmine/redmine/plugins/redmine_mail_reminder/lib/tasks/reminder.rake:43:in
block (4 levels) in <top (required)>' /home/redmine/redmine/plugins/redmine_mail_reminder/lib/tasks/reminder.rake:42:ineach' /home/redmine/redmine/plugins/redmine_mail_reminder/lib/tasks/reminder.rake:42:in
block (3 levels) in <top (required)>' /home/redmine/redmine/plugins/redmine_mail_reminder/app/models/mail_reminder_mailer.rb:23:inwith_synched_deliveries' /home/redmine/redmine/plugins/redmine_mail_reminder/lib/tasks/reminder.rake:41:in
block (2 levels) in <top (required)>' /home/redmine/redmine/vendor/bundle/ruby/2.3.0/gems/rake-10.1.1/lib/rake/task.rb:236:inblock in execute' /home/redmine/redmine/vendor/bundle/ruby/2.3.0/gems/rake-10.1.1/lib/rake/task.rb:231:in
each' /home/redmine/redmine/vendor/bundle/ruby/2.3.0/gems/rake-10.1.1/lib/rake/task.rb:231:inexecute' /home/redmine/redmine/vendor/bundle/ruby/2.3.0/gems/rake-10.1.1/lib/rake/task.rb:175:in
block in invoke_with_call_chain' /usr/lib/ruby/2.3.0/monitor.rb:214:inmon_synchronize' /home/redmine/redmine/vendor/bundle/ruby/2.3.0/gems/rake-10.1.1/lib/rake/task.rb:168:in
invoke_with_call_chain' /home/redmine/redmine/vendor/bundle/ruby/2.3.0/gems/rake-10.1.1/lib/rake/task.rb:161:ininvoke' /home/redmine/redmine/vendor/bundle/ruby/2.3.0/gems/rake-10.1.1/lib/rake/application.rb:149:in
invoke_task' /home/redmine/redmine/vendor/bundle/ruby/2.3.0/gems/rake-10.1.1/lib/rake/application.rb:106:inblock (2 levels) in top_level' /home/redmine/redmine/vendor/bundle/ruby/2.3.0/gems/rake-10.1.1/lib/rake/application.rb:106:in
each' /home/redmine/redmine/vendor/bundle/ruby/2.3.0/gems/rake-10.1.1/lib/rake/application.rb:106:inblock in top_level' /home/redmine/redmine/vendor/bundle/ruby/2.3.0/gems/rake-10.1.1/lib/rake/application.rb:115:in
run_with_threads' /home/redmine/redmine/vendor/bundle/ruby/2.3.0/gems/rake-10.1.1/lib/rake/application.rb:100:intop_level' /home/redmine/redmine/vendor/bundle/ruby/2.3.0/gems/rake-10.1.1/lib/rake/application.rb:78:in
block in run' /home/redmine/redmine/vendor/bundle/ruby/2.3.0/gems/rake-10.1.1/lib/rake/application.rb:165:instandard_exception_handling' /home/redmine/redmine/vendor/bundle/ruby/2.3.0/gems/rake-10.1.1/lib/rake/application.rb:75:in
run' /home/redmine/redmine/vendor/bundle/ruby/2.3.0/gems/rake-10.1.1/bin/rake:33:in<top (required)>' /home/redmine/redmine/vendor/bundle/ruby/2.3.0/bin/rake:22:in
load' /home/redmine/redmine/vendor/bundle/ruby/2.3.0/bin/rake:22:in `' Tasks: TOP => reminder:exec
And checked the code find :
def issues_reminder(user, queries_data) User.current = user @queries_data = [] queries_data.each do |project, query| query.project = project sort_init(query.sort_criteria.empty? ? [['id', 'desc']] : query.sort_criteria) @sort_criteria = SortCriteria.new @sort_criteria.available_criteria = query.sortable_columns @sort_criteria.criteria = @sort_default if @sort_criteria.empty?
I think this “SortCriteria" is no MailReminders' since I found no SortCriteria definition in MailReminder.
What cause this error?
I have found SortCriteria class has been moved out form SortHelper since 3.4.0. So I tried changed the code into
@sort_criteria = Redmine::SortCriteria.new
@sortable_columns = query.sortable_columns
issues = query.issues(:include => [:assigned_to, :tracker, :priority, :category, :fixed_version],
:order => sort_clause)
And got below error:
rake aborted! Mysql2::Error: Not unique table/alias: 'enumerations': SELECT
issues
.id
AS t0_r0,issues
.tracker_id
AS t0_r1,issues
.project_id
AS t0_r2,issues
.subject
AS t0_r3,issues
.description
AS t0_r4,issues
.due_date
AS t0_r5,issues
.category_id
AS t0_r6,issues
.status_id
AS t0_r7,issues
.assigned_to_id
AS t0_r8,issues
.priority_id
AS t0_r9,issues
.fixed_version_id
AS t0_r10,issues
.author_id
AS t0_r11,issues
.lock_version
AS t0_r12,issues
.created_on
AS t0_r13,issues
.updated_on
AS t0_r14,issues
.start_date
AS t0_r15,issues
.done_ratio
AS t0_r16,issues
.estimated_hours
AS t0_r17,issues
.parent_id
AS t0_r18,issues
.root_id
AS t0_r19,issues
.lft
AS t0_r20,issues
.rgt
AS t0_r21,issues
.is_private
AS t0_r22,issues
.closed_on
AS t0_r23,issue_statuses
.id
AS t1_r0,issue_statuses
.name
AS t1_r1,issue_statuses
.is_closed
AS t1_r2,issue_statuses
.position
AS t1_r3,issue_statuses
.default_done_ratio
AS t1_r4,projects
.id
AS t2_r0,projects
.name
AS t2_r1,projects
.description
AS t2_r2,projects
.homepage
AS t2_r3,projects
.is_public
AS t2_r4,projects
.parent_id
AS t2_r5,projects
.created_on
AS t2_r6,projects
.updated_on
AS t2_r7,projects
.identifier
AS t2_r8,projects
.status
AS t2_r9,projects
.lft
AS t2_r10,projects
.rgt
AS t2_r11,projects
.inherit_members
AS t2_r12,projects
.default_version_id
AS t2_r13,projects
.default_assigned_to_id
AS t2_r14,users
.id
AS t3_r0,users
.login
AS t3_r1,users
.hashed_password
AS t3_r2,users
.firstname
AS t3_r3,users
.lastname
AS t3_r4,users
.admin
AS t3_r5,users
.status
AS t3_r6,users
.last_login_on
AS t3_r7,users
.language
AS t3_r8,users
.auth_source_id
AS t3_r9,users
.created_on
AS t3_r10,users
.updated_on
AS t3_r11,users
.type
AS t3_r12,users
.identity_url
AS t3_r13,users
.mail_notification
AS t3_r14,users
.salt
AS t3_r15,users
.must_change_passwd
AS t3_r16,users
.passwd_changed_on
AS t3_r17,trackers
.id
AS t4_r0,trackers
.name
AS t4_r1,trackers
.is_in_chlog
AS t4_r2,trackers
.position
AS t4_r3,trackers
.is_in_roadmap
AS t4_r4,trackers
.fields_bits
AS t4_r5,trackers
.default_status_id
AS t4_r6,enumerations
.id
AS t5_r0,enumerations
.name
AS t5_r1,enumerations
.position
AS t5_r2,enumerations
.is_default
AS t5_r3,enumerations
.type
AS t5_r4,enumerations
.active
AS t5_r5,enumerations
.project_id
AS t5_r6,enumerations
.parent_id
AS t5_r7,enumerations
.position_name
AS t5_r8,issue_categories
.id
AS t6_r0,issue_categories
.project_id
AS t6_r1,issue_categories
.name
AS t6_r2,issue_categories
.assigned_to_id
AS t6_r3,versions
.id
AS t7_r0,versions
.project_id
AS t7_r1,versions
.name
AS t7_r2,versions
.description
AS t7_r3,versions
.effective_date
AS t7_r4,versions
.created_on
AS t7_r5,versions
.updated_on
AS t7_r6,versions
.wiki_page_title
AS t7_r7,versions
.status
AS t7_r8,versions
.sharing
AS t7_r9 FROMissues
INNER JOINprojects
ONprojects
.id
=issues
.project_id
INNER JOINissue_statuses
ONissue_statuses
.id
=issues
.status_id
LEFT OUTER JOINusers
ONusers
.id
=issues
.assigned_to_id
LEFT OUTER JOINtrackers
ONtrackers
.id
=issues
.tracker_id
LEFT OUTER JOINenumerations
ONenumerations
.id
=issues
.priority_id
ANDenumerations
.type
IN ('IssuePriority') LEFT OUTER JOINissue_categories
ONissue_categories
.id
=issues
.category_id
LEFT OUTER JOINversions
ONversions
.id
=issues
.fixed_version_id
LEFT OUTER JOIN enumerations ON enumerations.id = issues.priority_id WHERE (projects.status <> 9 AND EXISTS (SELECT 1 AS one FROM enabled_modules em WHERE em.project_id = projects.id AND em.name='issue_tracking')) AND ((issues.status_id IN (SELECT id FROM issue_statuses WHERE is_closed=0)) AND projects.lft >= 1 AND projects.rgt <= 4) ORDER BY enumerations.position DESC /home/redmine/redmine/app/models/issue_query.rb:306:inrescue in issues' /home/redmine/redmine/app/models/issue_query.rb:269:in
issues' /home/redmine/redmine/plugins/redmine_mail_reminder/app/models/mail_reminder_mailer.rb:36:inblock in issues_reminder' /usr/lib/ruby/2.3.0/set.rb:306:in
each_key' /usr/lib/ruby/2.3.0/set.rb:306:ineach' /home/redmine/redmine/plugins/redmine_mail_reminder/app/models/mail_reminder_mailer.rb:31:in
issues_reminder' /home/redmine/redmine/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.8/lib/abstract_controller/base.rb:198:inprocess_action' /home/redmine/redmine/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.8/lib/abstract_controller/callbacks.rb:20:in
block in process_action' /home/redmine/redmine/vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.8/lib/active_support/callbacks.rb:88:in__run_callbacks__' /home/redmine/redmine/vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.8/lib/active_support/callbacks.rb:778:in
_run_process_action_callbacks' /home/redmine/redmine/vendor/bundle/ruby/2.3.0/gems/activesupport-4.2.8/lib/active_support/callbacks.rb:81:inrun_callbacks' /home/redmine/redmine/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.8/lib/abstract_controller/callbacks.rb:19:in
process_action' /home/redmine/redmine/vendor/bundle/ruby/2.3.0/gems/actionpack-4.2.8/lib/abstract_controller/base.rb:137:inprocess' /home/redmine/redmine/vendor/bundle/ruby/2.3.0/gems/actionview-4.2.8/lib/action_view/rendering.rb:30:in
process' /home/redmine/redmine/vendor/bundle/ruby/2.3.0/gems/actionmailer-4.2.8/lib/action_mailer/base.rb:596:in `block in process'
And I also googled someone reported same issue for redmine 3.4.2.
Hello, have you found a solution for this problem?
No. I think we have to wait.
I have the same problem. Redmine 3.4.2.
I removed following code from /redmine_mail_reminder/app/models/mail_reminder_mailer.rb:
@sort_criteria = SortCriteria.new @sort_criteria.available_criteria = query.sortable_columns @sort_criteria.criteria = @sort_default if @sort_criteria.empty?
and changed code
issues = query.issues(:include => [:assigned_to, :tracker, :priority, :category, :fixed_version], :order => sort_clause)
to
issues = query.issues(:include => [:assigned_to, :tracker, :priority, :category, :fixed_version])
Restart.
It is working for me.
PS: I lost ordering. But it is not a big deal.
sezd2783, thanks for the idea!
I commented out all sorting and column setup at all, so now code looks like this:
queries_data.each do |project, query|
query.project = project
issues = query.issues
@queries_data << [project, query, issues] if issues.any?
end
Works Ok as well as query sorting is preserved.
With column setup
issues = query.issues(:include => [:assigned_to, :tracker, :priority, :category, :fixed_version])
i had an issue about doubling columns in SQL query