Project

General

Profile

Actions

Defect #33206

closed

Unable to autoload constant Version.table_name if gems uses Version class

Added by Alexander Meindl over 4 years ago. Updated over 3 years ago.

Status:
Closed
Priority:
Normal
Assignee:
Category:
Gems support
Target version:
Start date:
Due date:
% Done:

0%

Estimated time:
Resolution:
Fixed
Affected version:

Description

Introduced with r18780 Version.table_name is not available, if a gem package (like attr_encrypted) is used with a class named "Version".

At the moment this problem does not exist with Gem packages from Redmine itself, but gems from plugins.

Existing tests are broken, e.g.

bin/rails test test/unit/project_test.rb -n test_move_a_root_project_to_a_project
# Running:

E

Error:
ProjectTest#test_move_a_root_project_to_a_project:
NoMethodError: undefined method `table_name' for AttrEncrypted::Version:Module
    app/models/issue.rb:1739:in `update_versions'
    app/models/issue.rb:1385:in `update_versions_from_hierarchy_change'
    app/models/project.rb:935:in `update_versions_from_hierarchy_change'
    app/models/project.rb:424:in `set_parent!'
    test/unit/project_test.rb:316:in `test_move_a_root_project_to_a_project'

Similar problem was #23269. A better description of the problem with examples are here: https://stackoverflow.com/questions/21115567/autoloading-classes-using-class-self-in-rails

I added a patch for a more solid solution to prevent the problem. It would be great to have this change in Redmine.


Files

Actions

Also available in: Atom PDF