我计划编写一个gem,通过从链接下载或从文件系统或从字符串获取并上传到s3来创建zip文件。我从rubyzip劫持Zip模块是个好主意吗?
Zip::Voidzip.upload! do |zip|
zip.add "http://example.com/example.png", :as => "image/zzz.png"
zip.add "asdasdasdads"
zip.add "asd/asd.png"
end
因为代码最可能会是这样的。
module Zip
class Voidzip
def initialize zipname
t = Tempfile.new(zipname)
ZipOutputStream.open(t.path) do |zos|
end
end
end
end
对新手想要贡献的任何建议?
答案 0 :(得分:2)
最佳做法是命名您的宝石voidzip
。
如果您打算将您的gem设为zip
的插件,并且zip
实际上支持插件架构,那么练习就是命名您的gem {{ 1}}(但我认为这不是这种情况)。
您的模块/命名空间结构应该反映您宝石的名称。
如果您的宝石名为zip-voidzip
,那么我希望您的所有代码都在voidzip
之内,我希望能够Voidzip
。
如果您的gem名为require "voidzip"
,那么我希望您的所有代码都在zip-voidzip
之内,我希望能够选择Zip::Voidzip
或require "zip-voidzip"
答案 1 :(得分:1)
//关闭主题,OP试图做的不是monkeypatching本身(参见@Belllington的评论)
我一般都试图远离猴子修补,除非我不能这样做。调试某些内容并发现宝石创建者认为覆盖您依赖的功能是个好主意总是很痛苦。
但是不要相信我,trust him,他比我更有经验。
//关闭主题
你可以尝试做一点创意并想出一个不错的宝石名字:-)。
您是否只能使用Voidzip
名称,而不将其嵌入Zip
?