Ruby on rails “神秘化”;“未定义常数”;Ruby/Rails的问题

Ruby on rails “神秘化”;“未定义常数”;Ruby/Rails的问题,ruby-on-rails,ruby,mime,rest-client,Ruby On Rails,Ruby,Mime,Rest Client,我有一个Rails项目,其中一个常量在服务请求时在某个点被删除 我正在使用mime/types和restclientgems。restclient模块定义了一个对MIME的扩展,其中包含方法type\u for_extension module RestClient ... def stringify_headers headers result[key] = target_values.map { |ext| MIME::Types.type_for_extensi

我有一个Rails项目,其中一个常量在服务请求时在某个点被删除

我正在使用
mime/types
restclient
gems。
restclient
模块定义了一个对
MIME
的扩展,其中包含方法
type\u for_extension

module RestClient
    ...
    def stringify_headers headers
      result[key] = target_values.map { |ext| MIME::Types.type_for_extension(ext.to_s.strip) }.join(', ')
      ...
    end
  end
end

module MIME
  class Types
    def type_for_extension ext
      candidates = @extension_index[ext]
      candidates.empty? ? ext : candidates[0].content_type
    end
    class << self
      def type_for_extension ext
        @__types__.type_for_extension ext
      end
    end
  end
end
**这怎么可能<代码>为扩展名键入字符定义在与
字符串化字符头
相同的文件中;后者怎么会被核弹击中而前者却没有


编辑:修复了它

在我的配置中:

config.gem "aws-s3", :version => ">= 0.6.2", :lib => "aws/s3"  
config.gem 'mime-types', :lib => 'mime/types'
config.gem "aws-s3", :version => ">= 0.6.2", :lib => "aws/s3"  
config.gem 'mime-types', :lib => 'mime/types'
aws-s3
正在通过
require\u library\u或\u gem
加载
mime类型,最终调用了
ActiveSupport::Dependencies.autoload\u模块
维护一个名为
自动加载的\u常量
的表,当
ActionController.close
调用
Dispatcher.cleanup\u应用程序
时,该表将被取消

module RestClient
    ...
    def stringify_headers headers
      result[key] = target_values.map { |ext| MIME::Types.type_for_extension(ext.to_s.strip) }.join(', ')
      ...
    end
  end
end

module MIME
  class Types
    def type_for_extension ext
      candidates = @extension_index[ext]
      candidates.empty? ? ext : candidates[0].content_type
    end
    class << self
      def type_for_extension ext
        @__types__.type_for_extension ext
      end
    end
  end
end
修复方法是首先加载
mime类型,所以它不会自动加载

*呼*

应要求回答我自己的问题

在我的配置中:

config.gem "aws-s3", :version => ">= 0.6.2", :lib => "aws/s3"  
config.gem 'mime-types', :lib => 'mime/types'
config.gem "aws-s3", :version => ">= 0.6.2", :lib => "aws/s3"  
config.gem 'mime-types', :lib => 'mime/types'
aws-s3
库正在通过
require\u library\u或\u gem
加载
mime类型,最终调用了
ActiveSupport::Dependencies.autoload\u模块
维护一个名为
自动加载的\u常量的表
,当
ActionController.close
调用
Dispatcher.cleanup\u应用程序时,这些常量会被忽略。


修复方法是首先加载mime类型,因此它不会自动加载。

我认为您的编辑可以作为答案。你可以回答自己的问题,我怀疑任何人都不会反对回答这样棘手的问题。@Mud很高兴你能解决这个问题。同意mu。请将您的解决方案添加为问题的答案,并将其标记为最佳答案。绝对允许回答自己的问题:)