我在我的 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