rails how gems creating create ruby-on-rails gem gemspecs

ruby-on-rails - how - ruby list gems



Gemspec: ¿Cómo puedo especificar dependencias que no tienen que ser automáticamente requeridas? (2)

Creo que la forma de lograr lo que estás pidiendo es no colocarlo en tu gemspec propiamente dicho, sino agregar un Gemfile para agrupador. Luego puedes agregarlo como una gema instalada por Bundler.

Para hacer esto, agregue la simple palabra "gemspec" en la parte superior del Gemfile, o después de las declaraciones de origen. Esto recogerá las gemas específicas de gemspec. Básicamente esto no es un buen diseño. Parece más bien una entropía que debes evitar en gemas y código fuente cuando sea posible. Habiendo dicho eso, no creo que haya ningún daño al instalar la gema y tenerla requerida. Debe tener un espacio de nombre adecuado y no interferirá con nada más.

Dada la gema que citas. Puede que ya no necesites esa gema. ¿Estás en Ruby 1.9? Si es así, ahora SecureRandom módulo SecureRandom integrado en Ruby.

require ''secure_random'' my_uuid = SecureRandom.uuid

¡Puedes generar un verdadero UUID con él también! Así que sus DBA estarán contentos y pueden usar el tipo de datos UUID en Postgres. (Usted está usando postgres, ¿verdad? Jaja). También IIRC, UUIDTools no genera un UUID adecuado de acuerdo con los estándares. Creo que la tercera secuencia es incorrecta.

Escribí una gema con una cierta variedad de dependencias, y algunas de ellas me gustaría que no se hubieran requerido implícitamente cuando se agrupaban en otro proyecto. Un ejemplo es la gema uuidtools, que solo quiero requerir en los archivos que la usan.

gem.add_dependency("uuidtools",["=2.1.3"], :require => false)

Esta sintaxis es falsa, ya que: require => false es inesperado allí, pero más o menos resume lo que me gustaría hacer con ella. ¿Alguien me puede ayudar en esto?


Las gemas especificadas en un archivo gemspec de motores ya deben ser requeridas explícitamente, por defecto. De la documentación oficial : Note that if you want to immediately require dependencies when the engine is required, you should require them before the engine''s initialization . En su caso, debería poder arreglárselas con algo como gem.add_dependency ''uuidtools'', ''2.1.3'' en su archivo gemspec y requisitos en las ubicaciones relevantes.