yajl-ruby
JSON gem 互換性 API の代わりに の API を直接使用することをお勧めします。これは主に、JSON gem のto_json
メソッドが と競合しActiveSupport
、それらを連携させる際に長年の問題があったためです。
代わりに行う場合は、オブジェクトを解析/エンコードするためにand を直接config.gem 'yajl-ruby', :lib => 'yajl'
使用する必要があります。これの利点は、メソッドのオーバーライドとの競合がないことを確認できるため、JSON エンコード/解析コードが期待どおりに機能することが保証されることです。欠点は、JSON gem を使用する gem を使用している場合、それらは引き続き使用されますが、独自のコードでは yajl-ruby が使用されることです。Yajl::Parser
Yajl::Encoder
必要に応じて、 config.gem 行を使用してから、初期化子でrequire 'yajl'
両方の API をロードすることができます。yajl/json_gem
インクルードは、JSON gem を使用しているすべてのものをオーバーライドします-yajl
これを確実にオーバーライドするために、これらのメソッドrequire 'yajl/json_gem'
が最後に行われるようにします。
Rails 3 を使用している場合は、これを初期化子に追加できます。
ActionController::Renderers.add :json do |json, options|
json = Yajl.dump(json) unless json.respond_to?(:to_str)
json = "#{options[:callback]}(#{json})" unless options[:callback].blank?
self.content_type ||= Mime::JSON
self.response_body = json
end
render :json => ...
通話を確認するためにも使用yajl-ruby
します。
これがあなたの質問に本当に答えていない場合は申し訳ありませんが、少なくともyajl-ruby
の API を直接使用することを提案したいと思います:)