我有一个mod_rails服务器,奇怪的是,磁盘空间非常宝贵。有没有办法压缩我的应用程序源代码,比如Python's zipimport?
这有明显的缺点,所以我可能只是分解并在磁盘空间上花费镍,但我认为它值得一试。
答案 0 :(得分:2)
哦,这很整洁。查看rubyzip gem:
rubyzip也有特色 允许的zip/ziprequire.rb模块(source) ruby从拉链加载ruby模块 档案
(更新:rubyzip gem中不再存在ziprequire.rb,但source链接似乎包含旧内容。)
像这样。这只是从他们的例子中稍作修改: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
当然,您不必使用rubyzip库来创建压缩库。您可以使用CLI zip。
答案 1 :(得分:1)
require
和load
就像其他任何方法一样。您可以取消定义它们,重新定义它们,覆盖它们,挂钩它们,将它们包装起来做任何你想做的事情。事实上,这正是RubyGems的工作方式。
现在,我不知道某人是否已经为您实现了此,但我实际上还记得ruby-talk邮件列表中有关此问题的一些讨论。
但是,是从您可以查看的其他位置加载库代码的一些示例,并且可能复制/调整他们为您的目的所做的事情:< / p>
require
an HTTP URI require
以从(加密的)SQLite数据库而不是文件系统