新手问题 关于 Gem 的几个问题

cqcn1991 · 2016年01月18日 · 最后由 hooopo 回复于 2016年01月18日 · 1911 次阅读

我比较菜,没制作过任何gem, 这里的问题可能很Naive,但还是想问问

近来碰到的两个问题

1. 想要使用Ruby China, 很麻烦

Ruby China是完整的project, 没法直接像使用gem一样调用 比如,我只想使用topic系列的功能,那么可能就得深入研究源码,然后自己一边复制粘贴一边重新写一个 但整站的代码,确实太复杂了。

再比如,基于Ruby China的网站,像36Kr这种。对代码做了改进,想要回馈源project,也比较麻烦

2. 使用Devise很麻烦 ,太过复杂

devise非常容易使用,算是社区里非常有名的gem了 但是又太过庞大,难于修改、定制 想加一些功能就会很麻烦,要看文档来overwrite之前的代码 于是,很多朋友就干脆直接重新自己写了

实际当中,这些问题是如何解决的?


我觉得,这里的问题,其实是封装/不封装的问题?

也就是—— 你可以把一段代码抽象好,然后别人来调用。但是这样,就难于对代码本身调试和修改 也可以不抽象,这样子方便修改。但是想要把代码分享给别人,就很困难

是不是存在介于封装/不封装之间的解决办法,让我们可以轻松的写自己的代码,另一方面又可以把写好的部分分享给别人?

共收到 18 条回复

自己写~ 😄

其实 Rails 就是最大公约数了,业务部分都是各有不同应该自己写。

so, programming is too hard, let's go shopping.

#1楼 @rei 对...似乎大家都是如此

你的campo也是一样 我之前有个idea,也涉及到论坛,就想拿Campo的功能 可是,也是因为campo整体代码量太大,想融入进来觉得太麻烦,最后就不了了之了

不过要是存在一种介于封装/不封装的解决办法,就好了

最近自己写Python的脚本就有这个问题,抽象出来,别人就看不到源代码,不理解。不抽象出来,代码又太长,非常难读

用不好devise说明对Rails还不够了解,仔细读一下devise的代码对增强rails能力很有好处的。

这只是一个度的问题,抽象程度越高,信息熵越大,越不容易直观的理解并接受。 建议的方法是分层抽象,写好注释。

问题1:ruby-china也可以写成devise的形式,只是维护成本更高了,就不像是一个rails项目而是一个rails engine项目了。 问题2:devise我一直没有使用,但是我还是读了他的源码,devise本身写的很好但是不适合实际商业项目的逻辑。例如现在项目哪个还用email做用户名的,都是个性名+绑定手机,这里就会有短信验证的问题,会直接跳过devise的几个核心功能的流程(注册、手机验证、找回密码)。所以我现在更推荐用warden+bcrypt自己写认证模块。

老实说,每次看Rails的源代码都感觉和我用的不是同一种语言,但Rails用起来却十分舒服。所以说,黑盒不要紧,关键是接口要6。

第一个问题是因为你对 Rails 和 Git 不够熟悉,Fork 以后定制,然后再往源项目提交改进或合并源项目的新代码都是可行的。

另外,你的需求这个能解决

http://github.com/huacnlee/homeland

使用例子参考 https://github.com/huacnlee/imax.im

#10楼 @huacnlee 可以具体说说?

我知道是可以做,但是觉得很麻烦。不知道是我理解不到位还是有什么更好的做法?

#6楼 @ericguo #8楼 @zj0713001

我现在不想使用devise也是如此的原因…所以没必要用devise了?

#13楼 @cqcn1991 看情况,在没看懂devise得时候选择不用devise,而自己实现一套,你不慌就行。。。

devise 的修改和定制到底有什么复杂的? 你不妨具体指出来, 到底添加或者修改什么功能你觉得麻烦? 如果需要看文档写扩展就觉得麻烦, 那还有什么更'简单'的方式可以做到?

#15楼 @chenjau 说实话,其实我自己用devise没太多定制,没太多发言权

但是经常看到别人如此说起,说devise太重

妖我看来,就是现在的omniauth第3方验证,和现在的手机短信验证。但我仔细想了一下,应该是国内相关的gem比较麻烦?像我看原来用twitter,就很方便

#17楼 @5swords 都忙着赚钱,没空写gem。 👏

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册