我比较菜,没制作过任何 gem, 这里的问题可能很 Naive,但还是想问问
近来碰到的两个问题
Ruby China 是完整的 project, 没法直接像使用 gem 一样调用 比如,我只想使用 topic 系列的功能,那么可能就得深入研究源码,然后自己一边复制粘贴一边重新写一个 但整站的代码,确实太复杂了。
再比如,基于 Ruby China 的网站,像 36Kr 这种。对代码做了改进,想要回馈源 project,也比较麻烦
devise 非常容易使用,算是社区里非常有名的 gem 了 但是又太过庞大,难于修改、定制 想加一些功能就会很麻烦,要看文档来 overwrite 之前的代码 于是,很多朋友就干脆直接重新自己写了
实际当中,这些问题是如何解决的?
我觉得,这里的问题,其实是封装/不封装的问题?
也就是—— 你可以把一段代码抽象好,然后别人来调用。但是这样,就难于对代码本身调试和修改 也可以不抽象,这样子方便修改。但是想要把代码分享给别人,就很困难
是不是存在介于封装/不封装之间的解决办法,让我们可以轻松的写自己的代码,另一方面又可以把写好的部分分享给别人?
你的 campo 也是一样 我之前有个 idea,也涉及到论坛,就想拿 Campo 的功能 可是,也是因为 campo 整体代码量太大,想融入进来觉得太麻烦,最后就不了了之了
不过要是存在一种介于封装/不封装的解决办法,就好了
最近自己写 Python 的脚本就有这个问题,抽象出来,别人就看不到源代码,不理解。不抽象出来,代码又太长,非常难读
问题 1:ruby-china 也可以写成 devise 的形式,只是维护成本更高了,就不像是一个 rails 项目而是一个 rails engine 项目了。 问题 2:devise 我一直没有使用,但是我还是读了他的源码,devise 本身写的很好但是不适合实际商业项目的逻辑。例如现在项目哪个还用 email 做用户名的,都是个性名 + 绑定手机,这里就会有短信验证的问题,会直接跳过 devise 的几个核心功能的流程(注册、手机验证、找回密码)。所以我现在更推荐用 warden+bcrypt 自己写认证模块。
devise 的修改和定制到底有什么复杂的?你不妨具体指出来,到底添加或者修改什么功能你觉得麻烦?如果需要看文档写扩展就觉得麻烦,那还有什么更'简单'的方式可以做到?
看到 gem 的一个统计,顺手贴上来。 https://infinum.co/the-capsized-eight/articles/analyzing-rubygems-stats-v2015