Rails アプリで奇妙な動作が見られます。Ruby 1.9.2-p290 を実行しており、次のようなコントローラーを使用しています。
class NumbersController < ApplicationController
def index
render :json => [1,2,3]
end
end
問題を示すために、次のようにサーバーを実行するとします。
$ rails s # This one runs in "development" on port 3000
$ RAILS_ENV=production rails s -p 2999 # This one runs in "production" on port 2999
開発モードまたはテストモードでは、私の結果は次のようになります
$ curl localhost:3000/numbers # development
{numbers: [1,2,3]} # The root is being included in the json, as inferred from the controller name.
$ curl localhost:2999/numbers # production
[1,2,3] # No root in the JSON
私は細かい歯のくしでアプリを調べましたが、開発と本番の間でjsonに影響を与えるように見える明らかな構成の違いはありません. また、「if Rails.env === 'production'」のような行はありません
render :json => ... の動作を変更しているアセットなど、さまざまな宝石が必要であると推測しています。実行中のアプリ内から "json" および "multi_json" gem のバージョンを調べましたが、それらは同じです (それぞれ 1.7.5 と 1.3.6 で、multi_json は同じアダプターを使用しています)。アプリの実行中に必要な gem をアプリ内から正確に知るにはどうすればよいですか? また、誰か別の説明がありますか?
編集: Rails 3.1.1 を実行しており、Gemfile のアセット部分は次のとおりです。
group :assets do
gem "ember-rails"
gem "jquery-rails"
gem "less", "2.0.7"
gem "less-rails", "2.0.2"
gem 'uglifier'
end