MIME_TYPES
我需要通过向常量哈希添加一些项目来扩展现有模块(即 Redmine::MimeType) 。
这是我迄今为止尝试过的,这只给了我一个“动态常量分配”错误:
module MimeTypePatch
def self.included(base) # :nodoc:
base.extend(ClassMethods)
base.class_eval do
MIME_TYPES_VIDEO = {
'video/x-flv' => 'flv,f4v',
'video/mpeg' => '*.mpeg *.mpg *.mpe',
'video/quicktime' => 'qt,mov',
'video/vnd.vivo' => 'viv,vivo',
'video/x-msvideo' => 'avi'
}.freeze
# merge the new mime types with the existing ones
MIME_TYPES = MIME_TYPES.merge(MIME_TYPES_VIDEO).freeze
EXTENSIONS = MIME_TYPES.inject({}) do |map, (type, exts)|
exts.split(',').each {|ext| map[ext.strip] = type}
map
end
end
end
end
那么我做错了什么,改变另一个模块中现有常量的正确方法可能是什么?我确实看到在运行时更改常量有点过时,但我想不出更优雅的方法来实现我想要的(检测视频 mime 类型)。