2009/7/8 Matias Pablo Brutti <[email protected]>:
> Mientras le agregaba features a una tool me encontre con que tenia que
> agregar a mi .gemspec una gem "win32ole". La tool tambien funciona en
> Linux/osx  (primordialmente), entonces agregarle la dependencia de win32ole
> todo el tiempo no tiene sentido.  Me preguntaba si alguien sabe como hacerlo
> sin tener que usar rake.
> Busque y busque pero no encontre nada en la documentacion.  Se me ocurrio
> hacer un require 'platform' y en el   add_dependency lo filtre con un if
> Platform::IMPL == :mswin , pero no creo sea "the ruby way" ajajaj
> Slds.
>

Hola Matias,

Tu gem necesita win32/win32ole, o la version Pure-Ruby?

Pregunto esto por que win32ole no es una gema, sino una extension que
viene integrada en Ruby en su instalacion de Windows.

C:\Users\Luis>irb
irb(main):001:0> require 'win32ole'
=> true
irb(main):002:0> pp $LOADED_FEATURES.sort
["Win32API.so",
 "e2mmap.rb",
 "etc.so",
 "irb.rb",
 "irb/completion.rb",
 "irb/context.rb",
 "irb/extend-command.rb",
 "irb/init.rb",
 "irb/input-method.rb",
 "irb/locale.rb",
 "irb/notifier.rb",
 "irb/output-method.rb",
 "irb/ruby-lex.rb",
 "irb/ruby-token.rb",
 "irb/slex.rb",
 "irb/workspace.rb",
 "pp.rb",
 "prettyprint.rb",
 "rbreadline.rb",
 "readline.rb",
 "win32ole.so"]

===

Lo que deberias hacer es colocar un condicional de la plataforma
alrededor del require que invoca win32ole.


if RUBY_PLATFROM =~ /mingw|mswin/ then
  require 'win32ole'
  # ...
end

De esta manera, tenes solo una gema, con plataforma RUBY, y
condicionalmente y en tiempo de ejecución determinas si estas en
Windows para requerir ese componente.

Asi tambien evitas usar Rake, que parece que no te agrada :-P

Espero esto te sirva.

Saludos,
-- 
Luis Lavena
AREA 17
-
Perfection in design is achieved not when there is nothing more to add,
but rather when there is nothing more to take away.
Antoine de Saint-Exupéry
_______________________________________________
Ruby mailing list
[email protected]
http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar

Responder a