Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

uninitialized constant MailReminderMailer::SortCriteria during test #87

Open
jameswangcnln78 opened this issue Aug 10, 2017 · 5 comments

Comments

@jameswangcnln78
Copy link

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:in each' /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:in process_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:in run_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:in process' /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' /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:in instrument' /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:in process' /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:in new' /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:in message' /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:in deliver' /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:in each' /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:in with_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:in block 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:in execute' /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:in mon_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:in invoke' /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:in block (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:in block 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:in top_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:in standard_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?

@jameswangcnln78
Copy link
Author

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 FROM issues INNER JOIN projects ON projects.id = issues.project_id INNER JOIN issue_statuses ON issue_statuses.id = issues.status_id LEFT OUTER JOIN users ON users.id = issues.assigned_to_id LEFT OUTER JOIN trackers ON trackers.id = issues.tracker_id LEFT OUTER JOIN enumerations ON enumerations.id = issues.priority_id AND enumerations.type IN ('IssuePriority') LEFT OUTER JOIN issue_categories ON issue_categories.id = issues.category_id LEFT OUTER JOIN versions ON versions.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:in rescue 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: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:in each' /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:in process_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:in run_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:in process' /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.

@klewy
Copy link

klewy commented Aug 21, 2017

Hello, have you found a solution for this problem?

@jameswangcnln78
Copy link
Author

No. I think we have to wait.

@seza2783
Copy link

seza2783 commented Dec 13, 2017

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.

@danaivehr
Copy link

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants