随着向Redmine 5的过渡(使用Rails 6.1.7.4.),我试图调整自定义插件的代码。我现在在redmine_lutech_integration
目录下有这个文件:
#redmine5/plugins/redmine_lutech_integration/lib/redmine_lutech_integration/catalogue_user_format.rb
module Redmine
module FieldFormat
class CatalogueUserFormat < RecordList
#do stuff
end
end
end
Redmine::FieldFormat.add 'job', Redmine::FieldFormat::CatalogueUserFormat
这在经典的代码加载器中没有问题,但在Zeitwerk中我得到了:expected file redmine5/plugins/redmine_lutech_integration/lib/redmine_lutech_integration/catalogue_user_format.rb to define constant RedmineLutechIntegration::CatalogueUserFormat, but didn't (Zeitwerk::NameError)
RecordList is a class included in field_format.rb file located in Redmine5/lib/redmine/field_format.rb
是文件结构有问题,还是我在Zeitwerk设置中遗漏了什么?
对于相同插件中其他文件的类似问题,但它们不需要FiledFormat或其他东西,我通过将require File.dirname(__FILE__)+ 'path'
添加到插件的init文件来解决它们。
1条答案
按热度按时间dw1jzc5e1#
关于第一个错误
对于
Redmine::FieldFormat::CatalogueUserFormat
,您应该创建这样的文件:这是标准的Ruby约定:
Namespace::ClassOrModuleName
应在namespace/class_or_module_name.rb
中定义,CONSTANT_NAME
应在constant_name.rb
中定义关于第二个错误
require File.dirname(__FILE__)+ 'path'
-可能path
是局部变量,而不是文字path
字符串