我需要通過向常數MIME_TYPES
哈希添加幾個項目來擴展現有模塊(即Redmine :: MimeType)。紅寶石1.8.7在另一個模塊中擴展常量
這是我試過到目前爲止,只有給了我一個「動態的不斷分配」錯誤:
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類型)。
有幫助嗎? – abhas 2012-07-26 18:21:59
有點......我並不是真的想要使用這個解決方案,因爲我不想覆蓋/複製redmine的一些方法。我最終只是將我的值添加到核心Hash。在這種情況下似乎更好的解決方案。但謝謝你的建議。 – Dennis 2012-07-30 11:26:07