新手问题 只会 CRUD 的 Rails 菜鸟如何着手 Redmine 二次开发

bevanpf · 2017年07月02日 · 最后由 whjwssy2017 回复于 2018年03月05日 · 5971 次阅读

说下基本情况:最近找到一个 Ruby 实习机会,工作内容是对 redmine 的二次开发,但是自己目前只做过一个 Rails 玩具项目,只会基本的 CRUD,更重要的是目前项目只有我一个人😂 完全没有老司机带,感觉无从下手。

折腾过 redmine 的前辈还请不吝赐教,蟹蟹~

少年你也是勇气可嘉啊,没有老司机带居然也敢接锅
https://ruby-china.org/topics/29483
善用谷歌和 rubychina 论坛的搜索

flowerains 回复

好不容易遇到招 ruby 实习的就上了

老司机来带你

bernardlai 回复

求带飞!怎么联系你啊,微信聊?18613123019

Redmine 至少是个开源项目,资料比较多,如果是内部项目…

Rei 回复

内部项目说不定有人带😅一个人觉得压力山大

从页面入手吧,先确定你的工作涉及到哪个(些)页面,简单的办法是浏览器打开到对应功能的页面去,看 URL,利用 Rails 的 Convention(这个算必须清楚的)看看能不能定位到对应的控制器和 action 上去,如果不能就去路由定义里找。

然后看 action 和相关的过滤器的实现,找到相关的模型,关注好模型间的联系(has_many、belongs_to 那些)还有各种钩子(before_save 那些,关注这个是留意在 hook 里的数据操作,避免踩坑)

然后搞你的功能就是了,上边的调研告诉了你要把新功能放到哪个控制器(或者是需要新建一个新的,但是控制器里的很多代码可以复制相关的控制器里的)。以及需要扩展哪些模型,模型里放业务逻辑和对字段的改动都是围绕数据来进行的,所以你只要保证你新的代码执行后对数据造成的改动是你在设计时预期的的就可以了

接手一个系统的时候,在不熟悉这套系统的时候,尽量不要对已有的业务逻辑进行改动,就是说,在适当的位置插入新的逻辑,尽可能避免修改已有的代码的执行逻辑,把对系统的改动的范围控制在你的新代码里,这样出问题你也更能解决(毕竟出问题肯定是你的新业务逻辑)。另外,小步走,多提交,每次提交的改动尽量小。

Redmine 总体来讲,还是上世纪的 Ruby 代码风格,尽量不要学他的写法。

多年 Ruby、Rails 老司机表示,Redmine 依然的二次开发依然不敢动,看不懂

建议用 GitLab 代替,代码可读性更高

huacnlee 回复

Gitlab 和 Redmine 不是一种东西嘛...

jasl 回复

我感觉差不多,做项目管理工具完全没问题

jasl 回复

好的,谢谢提点~

jasl 回复

如果看想通过看源码来学习的话,现在比较合适的项目是什么呢?Gitlab 怎么样,毕竟不像 Discourse 那种前端用 Ember.js(?),好像更容易看一些吧。

还有 Ruby-China 本身的那个 Homeland 的代码风格算是现在主流的吗?还是也存在一些“历史的包袱”呢?

uxgnod 回复

代码差不代表你不能了解他的思路,要是你好奇某个软件/库的某个功能是如何实现的,就读读看嘛,闭源的一样可以逆向的。

好看的代码大多存在于没什么人用的程序里吧。

uxgnod 回复

homeland 的历史包袱也挺多的,比如关注用户这块还是 mongodb 的设计(现在重构没有不道)

redmine 完全没用 assets pipeline、strong parameter 这些已经出现四五年的成熟技术,attr_accessible 都还是自己造的轮子,毕竟是从 rails 2.x 时代发展上来的

怎么样写成好的代码大概就是经验吧,不过即使明白怎么写好,工作时候因为进度压力、重要性不足,也胡搞了...

jasl 回复

关注那个我已经重构过了,基于我的 action-store 来实现的,不是你说那种

哥很勤奋的,老的实现都差不多重构过了

这句好玩:“好看的代码存在于没什么人用的程序里。”😂

huacnlee 回复

厉害了 word 哥...

jasl 回复

今日最佳:"好看的代码大多存在于没什么人用的程序里吧"

baidu 了一下,参考http://wangsheng2008love.blog.163.com/blog/static/78201689200992064615770/ redmine 的插件还是很多规范可以参考的,不需要野蛮实现方式

badboy 回复

你发的应该过时了,那篇文章的发布时间是 09 年,文中的命令行还是 Rails 2 的风格,现在几个在维护的 Redmine 版本在使用 Rails 4.2

好的 当年也对 redmine 做过二次开发,表示还是可以学习很多东西的。

Redmine 早期代码质量很差的,直到他们用 Rails 3 重写了 Redmine 之后,代码依然不堪入目。

几年过去了,现在 Redmine 是 Rails 4 平台的了,不知道进步了多少。

对新手来说,是个很好的锻炼,但是要小心被带偏了。

好看的代码大多存在于没什么人用的程序里吧。

@kgen 问一下,云梯现在是不能用了吗?

@kgen what about the yunti?

huacnlee 回复

hi 我想问一下有关于 redmine 的书籍推荐吗?我也需要做二次开发,想深入了解一下。redmine 内部机制中有涉及到哪些典型算法的实现或创新呢?

huacnlee 回复

主要还是偏业务代码的实现吧?

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