Broken support for Principal plugins
I'm not sure when exactly it happens (it's worked sometime ago), but things becomes broken for Principal with empty plugin.
How to reproduce:
$ cat vendor/plugins/test_plugin/init.rb
require 'redmine' require 'dispatcher' Dispatcher.to_prepare :test_plugin do require_dependency 'principal' end Redmine::Plugin.register :test_plugin do end
(no other files in vendor/test_plugin)
$ rake test:units <...> 1) Failure: test_roles_updated(GroupTest) [/test/unit/group_test.rb:57]: <[1, 2]> expected but was <>. 2) Failure: test_visible_scope_for_user(IssueTest) [/test/unit/issue_test.rb:94]: <false> is not true. 478 tests, 2036 assertions, 2 failures, 0 errors
#6 Updated by Jean-Baptiste Barth over 9 years ago
- Assignee deleted (
Had the same kind of problem recently with memberships. It seems Rails has some troubles reloading things correctly when some classes has been reloaded through engines. It may have something to do with STI (doesn't affect other classes from what I've seen).
For instance, with your test plugin, in
test/unit/group_test.rb, line 57:
assert_equal [1, 2], user.reload.roles_for_project(project).collect(&:id).sort #=> KO assert_equal [1, 2], User.find(9).roles_for_project(project).collect(&:id).sort #=> OK
I tried to mark some classes as unloadable in the core, doesn't change anything...
#7 Updated by Jean-Baptiste Barth over 9 years ago
- Status changed from New to 7
- Assignee set to Jean-Baptiste Barth
I continue to think it's a rails bug, but it's solved by forcing memberships reload in User model :
def reload(*args) @name = nil self.memberships.reload super(*args) end
Any thought about integrating that into the core ? (note it also works when monkey patching User class this way in the plugin...)