Ruby on rails 新手询问创业板结构的建议
我计划编写一个gem,通过从链接下载或从文件系统获取或从字符串上传到s3来创建zip文件。我从rubyzip劫持Zip模块是个好主意吗Ruby on rails 新手询问创业板结构的建议,ruby-on-rails,ruby,gem,Ruby On Rails,Ruby,Gem,我计划编写一个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 cla
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
对想贡献的新手有什么建议吗?//话题之外,OP想要做的不是蒙基补丁本身(见@Beerlington的评论)
我通常会尽量远离猴子打补丁,除非我做不到。调试某些东西并发现gem创建者认为覆盖您所依赖的功能是个好主意,这总是很痛苦的
但别相信我,他比我更有经验
//离题结束
你可以试着有点创意,想出一个好的宝石名字:-)
你不能只使用
Voidzip
名称,而不将其嵌套到Zip
中吗?最佳做法是给你的宝石命名Voidzip
如果您打算让您的gem成为zip
的插件,并且zip
实际上支持插件体系结构,那么实践将是将您的gem命名为zip-voidzip
(但我不认为这里是这种情况)
您的模块/命名空间结构应该镜像gem的名称
如果您的gem名为voidzip
,那么我希望您的所有代码都在voidzip
范围内,并且我希望能够要求使用“voidzip”
如果您的gem名为
zip-voidzip
,那么我希望您的所有代码都在zip::voidzip
范围内,并且我希望能够要求“zip-voidzip”
或要求“zip/voidzip”
由我选择。这可以说不是猴子补丁,因为它不是覆盖或修改现有功能,只是向现有模块添加一个新类。@Beerlington啊,谢谢,我以为Voidzip
类已经存在了。我更新了我的答案