リクエストを処理している間に定数がヌークされているRailsプロジェクトがあります。Ruby/Railsで「定義されていない定数」問題が発生する
私はmime/types
とrestclient
の宝石を使用しています。 restclient
モジュールは、方法type_for_extension
を含むMIME
の拡張子を定義します。
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
にアクセスすることができます。 2回目の呼び出しで、それはなくなりました。これをどのように
NoMethodError, message: undefined method `type_for_extension' for MIME::Types:Class
を**:
私はまだMIME::Types.type_for
を使用できますが、追加の方法は、単純になくなっているので、私はRestClientモジュールを使用しようとすると、それはstringify_headers
でshowinラインで例外がスローされます可能? type_for_extension
同じファイルとしてstringify_headers
と定義されています。後者はどのようにして元通りになることができましたか?
EDIT:FIXED IT!私の設定で
:
config.gem "aws-s3", :version => ">= 0.6.2", :lib => "aws/s3"
config.gem 'mime-types', :lib => 'mime/types'
aws-s3
は究極のテーブルがActionController.close
がDispatcher.cleanup_application
を呼び出すときがを被爆されautoloaded_constants
と呼ば維持ActiveSupport::Dependencies.autoload_module!
を呼び出さrequire_library_or_gem
経由mime-types
を、ロードしました。
最初にmime-types
をロードしていたので、自動ロードされませんでした。
*やれやれ*
私はあなたの編集が答えになると言います。あなたはあなた自身の質問に答えることが許されており、誰かがそのようなトリッキーなものに対する答えに反対するのではないかと疑う。 –
@マッドグッドあなたは問題を解決することができました。 – buruzaemon
ミューと同意する。質問への回答としてあなたの解決策を追加して、最良の回答としてください。あなた自身の質問に答えることは間違いありません:) – Emily