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

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

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

近来碰到的两个问题

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

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

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

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

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

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


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

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

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

自己写~ 😄

其实 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。 👏

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