首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ruby/Rails中的“未定义常量”问题

Ruby/Rails中的“未定义常量”问题
EN

Stack Overflow用户
提问于 2011-07-16 22:32:41
回答 1查看 1.6K关注 0票数 13

我有一个Rails项目,其中一个常量在某个时刻在服务请求时被核弹。

我使用的是mime/typesrestclient宝石。restclient模块定义了MIME的扩展,其中包含方法type_for_extension

代码语言:javascript
复制
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::Types.type_for_extension。在第二次调用中,它消失了。

我仍然可以使用MIME::Types.type_for,但是添加的方法已经没有了,所以当我尝试使用RestClient模块时,它会在stringify_headers中的行显示中抛出一个异常。

代码语言:javascript
复制
NoMethodError, message: undefined method `type_for_extension' for MIME::Types:Class

**这怎么可能?type_for_extensionstringify_headers在同一个文件中定义;后者怎么会被核弹,而前者却没有?

编辑:固定IT!

在我的配置中:

代码语言:javascript
复制
config.gem "aws-s3", :version => ">= 0.6.2", :lib => "aws/s3"  
config.gem 'mime-types', :lib => 'mime/types'

aws-s3通过require_library_or_gem加载mime-types,后者最终调用ActiveSupport::Dependencies.autoload_module!,后者维护一个名为autoloaded_constants的表,当ActionController.close调用Dispatcher.cleanup_application时,该表将被核化。

修正是先加载mime-types,所以它不是自动加载的。

*呜呜*

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-07-26 03:24:42

按要求回答我自己的问题。

在我的配置中:

代码语言:javascript
复制
config.gem "aws-s3", :version => ">= 0.6.2", :lib => "aws/s3"  
config.gem 'mime-types', :lib => 'mime/types'

aws-s3库通过require_library_or_gem加载mime-types,后者最终调用了ActiveSupport::Dependencies.autoload_module!,后者维护了一个名为autoloaded_constants的表,当ActionController.close调用Dispatcher.cleanup_application.时,该表将被核化。

修正是先加载mime类型,所以它不是自动加载的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6720683

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档