新手询问宝石结构的建议

时间:2011-09-22 11:25:20

标签: 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
  class Voidzip
    def initialize zipname
      t = Tempfile.new(zipname)
      ZipOutputStream.open(t.path) do |zos|

      end
    end
  end
end

对新手想要贡献的任何建议?

2 个答案:

答案 0 :(得分:2)

最佳做法是命名您的宝石voidzip

如果您打算将您的gem设为zip插件,并且zip实际上支持插件架构,那么练习就是命名您的gem {{ 1}}(但我认为这不是这种情况)。

您的模块/命名空间结构应该反映您宝石的名称。

如果您的宝石名为zip-voidzip,那么我希望您的所有代码都在voidzip之内,我希望能够Voidzip

如果您的gem名为require "voidzip",那么我希望您的所有代码都在zip-voidzip之内,我希望能够选择Zip::Voidziprequire "zip-voidzip"

答案 1 :(得分:1)

//关闭主题,OP试图做的不是monkeypatching本身(参见@Belllington的评论)

我一般都试图远离猴子修补,除非我不能这样做。调试某些内容并发现宝石创建者认为覆盖您依赖的功能是个好主意总是很痛苦。

但是不要相信我,trust him,他比我更有经验。

//关闭主题

你可以尝试做一点创意并想出一个不错的宝石名字:-)。​​

您是否只能使用Voidzip名称,而不将其嵌入Zip