Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 新手询问创业板结构的建议_Ruby On Rails_Ruby_Gem - Fatal编程技术网

Ruby on rails 新手询问创业板结构的建议

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

我计划编写一个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
对想贡献的新手有什么建议吗?

//话题之外,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
类已经存在了。我更新了我的答案