2010-11-23 18 views
11

Soy nuevo en Rails y estoy confundido sobre el concepto de complementos de gemas &. ¿Alguien puede explicarlos por mí?¿cuál es la diferencia entre gem y plugin?

+0

posible duplicado de [En Ruby on Rails, ¿cuál es la diferencia entre instalar algo como una gema o como un complemento?] (Http://stackoverflow.com/questions/3629919/in-ruby-on-rails-whats- the-difference-between-Installing-something-as-a-gem-or) –

Respuesta

1

Los complementos se utilizan cada vez menos, así que quédate con las gemas. Las gemas y los complementos pueden hacer exactamente lo mismo, por eso son confusos. Sin embargo, las diferencias son la forma en que están organizadas y, lo más importante, cómo se gestionan las gemas, como bundler o config.gem. Es mucho más fácil administrar gemas y sus versiones. Los complementos se deben instalar en la carpeta vendor donde también se puede instalar gems en esa carpeta si necesitan personalizarse o se pueden instalar en un directorio gem siempre que los rieles comprendan dónde se encuentra ese directorio. Cuando comenzaron los rieles, la mayoría de las personas usaba complementos para agregar funcionalidad, pero los desarrolladores se dieron cuenta rápidamente de que las gemas ofrecían una mejor manera de empaquetar y actualizar bibliotecas, por lo que la mayoría de los complementos migraron a gemas y se crearon menos complementos.

8

Los complementos son solo bibliotecas cargadas desde un directorio específico, las gemas se cargan directamente a través de Bundler o RubyGems.

Donde esto realmente hace una diferencia es el mantenimiento y la gestión. Lo que sucede cuando quieres el último y mejor plugin de authlogic, también necesitas actualizar los archivos en tu directorio. Eso no suena tan mal cuando se trata de un complemento, pero ¿qué pasa con algo que se actualiza constantemente? Había/hay un sistema existente para el empaquetado y la distribución de códigos (RubyGems), que se presta para administrar tales cosas.

Considere el ejemplo authlogic nuevamente, ¿qué ocurre si la nueva versión requiere alguna otra dependencia ahora? Con RubyGems, el archivo gema define explícitamente esa relación, el sistema de complemento no y esa definición habría sido redundante.

Con la llegada de Bundler en los rieles 3.x se ha vuelto muy fácil administrar y distribuir las gemas que usa su proyecto.

TL; DR: Los complementos son básicamente gemas sin la información de embalaje.

-1

Gem y Plugin

joya se almacena en archivos lib

Una joya es una aplicación de Rubí empaquetado utilizando el sistema de envasado definido por RubyGems.

plugins se almacenan en vendedores/plugins

A Rails Plugin es una aplicación de Rubí empaquetado que se extiende el marco rieles centrales.

Cuestiones relacionadas