2012-07-19 16 views
7

Soy nuevo en ruby ​​y necesito depurar alguna aplicación de ruby ​​empaquetada como una gema.¿Cuál es el equivalente Ruby de python setup.py develop?

Estoy usando rvm, donde instalé el paquete como una gema, y ​​también tengo un pago de github nuevo de ese paquete. ¿Cómo puedo decirle a mi entorno rvm que use el código en el repositorio github en lugar de la gema instalada?

Esto es el equivalente a python setup.py develop para personas familiarizadas con python.

Setuptools le permite implementar sus proyectos para su uso en un directorio común o área de ensayo, pero sin copiar ningún archivo. Por lo tanto, se puede editar el código de cada proyecto en su directorio de la caja

https://pythonhosted.org/setuptools/setuptools.html#development-mode

Respuesta

7

Sí, se puede.

Consulte Bundler. Es el estándar de facto para usarlo.

+0

Busqué un paquete e hice lo siguiente: primero, creé un nuevo gemset dentro de rvm, luego el paquete de instalación de gem, y luego la instalación de bundler. Instala todas las dependencias como se esperaba, pero cuando intento ejecutar la aplicación en la que realicé la instalación del paquete, obtengo un rastreo. No estoy seguro si proviene de mi uso de rvm/gemset/whatever. El rastreo es algo así como "/Users/cournape/.rvm/rubies/ruby-1.9.2-p320/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:247:in' to_specs ': Could not find vagabundo (> = 0) entre [...] (vagabundo es la aplicación que estoy buscando). –

+0

Hm. ¿Cómo se está ejecutando vagabundo? Si lo has comprobado, después de la instalación del paquete, deberías poder haga 'bin/vagrant' y ejecute el código que acaba de verificar. También puede hacer' bundle exec bin/vagrant', que debería ser aún mejor, aunque el gemset debería hacerlo irrelevante ('bundle exec' hace una mezcla de las gemas disponibles para aquellos en 'Gemfile.lock', pero si tienes un Gemset nuevo, debería ser prácticamente el mismo). –

+0

Creo que hice algo mal, ya no veo el problema. En cualquier caso, tu consejo de usar bundle exec funciona perfectamente. Gracias –

0

Además de la respuesta anterior.

A veces las gemas/paquetes son ejecutables. Lo bueno con python setup.py develop es que siempre tendrá la última versión de ese ejecutable en su camino. Es algo útil para el desarrollo. Por lo que sé, Gem no proporciona esa funcionalidad. Para emular que puede utilizar Bundler y es la forma:

  • En primer lugar crear un nuevo Gemfile: bundle init
  • luego editar ese archivo y añadir la joya local que se está trabajando (para mí es NANOC): gem "nanoc", path: "path/to/local/nanoc"
  • luego para acceder al ejecutable proporcionado por la gema que es posible utilizar bundler de esa manera: bundle exec nanoc ...

Aquí bundle exec se llevará a la versión de la gema de su Gemfile y utilizarlo. Si esa Gema se especifica con una opción :path, entonces usará eso en.

Es ciertamente menos conveniente que en Python, pero es la solución más cercana que encontré en Ruby.

Cuestiones relacionadas