serializers rails fast active_model_serializers active ruby-on-rails ruby ruby-on-rails-4 active-model-serializers jbuilder

ruby on rails - fast - jbuilder vs rails-api/active_model_serializers para el manejo de JSON en Rails 4



gem ''active_model_serializers'' (1)

Depende de tus preferencias y necesidades.

Si está trabajando con el front-end de Ember.js, me inclinaría hacia active_model_serializers ya que Ember.js básicamente fue diseñado para funcionar bien con él (Yehuda Katz es uno de los mantenedores de active_model_serializers y está en el equipo central de Ember.js ; Dio una charla sobre el tema hace un tiempo).

Desglose rápido:

Serializadores de modelo activo

Separa el problema de la serialización en su propia carpeta /app/serializers , viene con su propio generador Rails, y se comporta más como ActiveRecord en que usted puede definir asociaciones en el serializador. Luego hará las cosas correctas de forma automática en función de sus convenciones obstinadas (por ejemplo, carcasa de camello, asociaciones de carga lateral ... etc.). Ryan Bates tiene un excelente episodio de RailsCast sobre el tema: http://railscasts.com/episodes/409-active-model-serializers

Jbuilder

Jbuilder tiene un enfoque casi opuesto, ya que considera que la construcción del formato JSON es solo otra vista de Rails. Usted construye sus respuestas en los directorios correspondientes /app/views/ como lo haría con las plantillas de visualización. Y puede asumir muchas de las características de una plantilla de vista, como entender qué es current_user , fuera de la caja (esto no es tan directo con AMS), encadenando relaciones ( @user.posts ) ... etc. Y por supuesto , Ryan Bates también hizo un RailsCast sobre el tema: http://railscasts.com/episodes/320-jbuilder

Alternativa: Rabl

Ryan Bates (naturalmente) hizo un RailsCast en Rabl también: http://railscasts.com/episodes/322-rabl . En concepto, está mucho más cerca de Jbuilder que AMS. Y también ha sido por más tiempo. Personalmente no soy muy aficionado a su sintaxis. Pero esa es una cuestión de opinión.

Si no estuviera trabajando en un proyecto de Ember.js, elegiría Jbuider por su simplicidad y el concepto más accesible.

En cuanto al rendimiento, al menos un usuario afirma que puede hacer que Jbuilder sea mucho más rápido que Rabl y AMS: https://medium.com/@lgmspb/how-we-increased-the-speed-of-json-generation-by-3000-times-ca9395ab7337

Seguimiento (22/01/2015): Leigh Halliday escribió un buen curso intensivo comparando algunas de las gemas. El artículo cubre un par de alternativas más además de las mencionadas aquí. http://www.leighhalliday.com/posts/responding-with-json-in-rails

Empecé a comenzar con Rails 4 .

Mientras trabajaba con el manejo de los datos del formato JSON, descubrí que podemos usar rails/jbuilder y funciona bien.

Sin embargo, cuando estaba tomando el Patrón Rails 4 de Codeschool , mencionaron la gema llamada active_model_serializers .

Mientras que para active_model_serializers gem, toda la lógica de la serialización JSON entra en el Modelo (que se considera como las mejores prácticas).

mientras que para jbuilder joya, necesitamos escribir un archivo de vista separado con la extensión .json.jbuilder .

Mis preguntas son:

  • Cuál es ideal para el manejo de datos JSON
  • Cualquier diferencia de rendimiento entre dos