tipos salen rubi preciosas piedras piedra mineral los extrae encuentran donde diamantes diamante como color bruto ruby rubygems

ruby - salen - desempaquetar/congelar gemas en una aplicación de rubíes sin rieles



rubi mineral (1)

Estoy escribiendo una aplicación de rubí que no es de Rails (¡jadeó!) Y me gustaría poder incluir todas las dependencias de gemas que requiere la aplicación en un subdirectorio de proveedor. Esto sería similar a cómo funciona http://gemsonrails.rubyforge.org/ para las aplicaciones de Rails.

El objetivo aquí es evitar la situación que mi equipo experimenta actualmente cuando se agrega una nueva dependencia. Cada desarrollador de mi equipo tiene que instalar la gema manualmente, y luego alguien tiene que actualizar manualmente cada prueba y máquina de producción y puesta en escena. Si podemos congelar las dependencias en la aplicación distribuida, entonces una simple actualización svn (o git pull para esos hipsters en la multitud) sería todo lo que se necesita.


ACTUALIZACIÓN (Nueva solución):

Prueba la nueva gema de bundler de Yehuda Katz. gem install bundler luego crea un Gemfile con todas tus dependencias. Ver la documentación para más información.

Antigua recomendación:

Una manera fácil es simplemente desempaquetar manualmente las gemas en su directorio de vendor y agregar la ruta de acceso de las gemas desempaquetadas al frente de $ LOAD_PATH.

Para desempacar una gema:

$ cd vendor/gems $ gem unpack active_support Unpacked gem: ''/path/to/myproject/vendor/gems/activesupport-2.3.2''

Solo asegúrate de desempaquetar todas las gemas necesarias y sus dependencias (usando las versiones correctas).

Para agregar todas las gemas en el proveedor / gemas a su $ LOAD_PATH, intente agregar algo como esto a la inicialización de su aplicación:

Dir.glob(File.join("vendor", "gems", "*", "lib")).each do |lib| $LOAD_PATH.unshift(File.expand_path(lib)) end

Actualización: Sarah (en los comentarios) me convenció de que también podría ser necesario anular GEM_PATH. Aquí hay una manera de hacerlo:

require ''rubygems'' gem_paths = [File.expand_path(File.join("vendor", "gems")), Gem.default_dir] Gem.clear_paths Gem.send :set_paths, gem_paths.join(":")

Otra opción es buscar en Rip (Empaquetado Inteligente de Ruby) para administrar sus dependencias. Rip se ve muy dulce, pero aún es nuevo.