Oh, c'est propre. Consultez le rubyzip bijou:
rubyzip propose également le zip/ziprequire.rb module (source) qui permet ruby de charger des modules de rubis de zip archives.
(Mise à jour: Le ziprequire.rb n'est plus présent dans la gemme rubyzip, mais le lien source semble contenir son ancien contenu quand même.)
souhaiterai. Ceci est légèrement modifié par rapport à leur exemple:
require 'rubygems'
require 'zip/zipfilesystem'
require 'zip/ziprequire'
Zip::ZipFile.open("/tmp/mylib.zip", true) do |zip|
zip.file.open('mylib/somefile.rb', 'w') do |file|
file.puts "def foo"
file.puts " puts 'foo was here'"
file.puts "end"
end
end
$:.unshift '/tmp/mylib.zip'
require 'mylib/somefile'
foo # => foo was here
Vous ne devez pas utiliser la bibliothèque de rubyzip pour créer la bibliothèque zippée, bien sûr. Vous pouvez utiliser le zip CLI pour cela.
Intéressant en effet. Il semble (d'un coup d'oeil rapide) que ziprequire.rb n'est plus là. Apparemment, [il y a un problème] (https://github.com/rubyzip/rubyzip/issues/51) à ce sujet. [Ici] (https://github.com/rubyzip/rubyzip/commit/794c9463fcb2f5a0bd41f4645978e691c66b0ea6) est le commit actuel dans lequel a été retiré le repo "officiel" de RubyZip. Bien sûr, il peut toujours être ajouté dans votre propre projet (s) au besoin ... –
Edited post à cette offre. –