요청을 처리하는 동안 상수가 중단되는 레일스 프로젝트가 있습니다.루비/레일즈에서 "정의되지 않은 상수"문제가 발생했습니다
나는 mime/types
과 restclient
보석을 사용하고 있습니다. restclient
모듈은 MIME
의 확장자를 정의하며 여기에는 type_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
나는 주어진 컨트롤러 액션의 내 처음 호출에 MIME::Types.type_for_extension
에 액세스 할 수 있습니다. 두 번째 호출에서 사라졌습니다. 이 얼마나
NoMethodError, message: undefined method `type_for_extension' for MIME::Types:Class
을 ** :
난 아직도 MIME::Types.type_for
를 사용할 수 있지만 추가 방법은 간단하게 사라지고, 그래서 나는 위해 RESTClient 모듈을 사용하려고 할 때 stringify_headers
에 나와 서 라인에 예외를 throw 가능한? type_for_extension
은 동일한 파일에 정의 된대로 stringify_headers
; 후자가 어떻게 핵무기를 만들지 만 이전 핵을 만들지는 못했을까요?
편집 : IT를 고정! 내 설정에서
: 궁극적 인 테이블이 이 때 ActionController.close
전화 Dispatcher.cleanup_application
을 핵 공격이다 autoloaded_constants
이라고 유지 ActiveSupport::Dependencies.autoload_module!
를 호출
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
로드하는
처음에는 mime-types
을로드하는 것이므로 자동로드되지 않습니다.
* 휴 *
귀하의 편집 권한이 답변으로 인정됩니다. 당신은 당신 자신의 질문에 답하는 것을 허락 받았고 나는 그와 같이 까다로운 것에 대한 대답에 반대하는 사람은 없을 것이라고 생각합니다. –
@Mud 다행스럽게도 문제를 해결할 수있었습니다. – buruzaemon
뮤와 동의하십시오. 질문에 대한 답변으로 솔루션을 추가하고 최상의 답을 표시하십시오. 자신의 질문에 대답하는 것은 확실히 허용됩니다 :) – Emily