Gem override 某个 gem 的 controller 方法

cestivan · September 12, 2013 · Last by huobazi replied at September 13, 2013 · 3288 hits

我的 Rails 程序使用了miliagem,不过这个 gem 有段时间没有更新了,一些依赖的 gem 更新后导致它没有办法正常工作。 我在本地环境修改 gem 代码测试通过了,确认了问题。问题很小,所以我觉得还是 commit 给作者,然后等更新会好一点。 等更新的过程,想用其他方法先解决,方案是在程序的其他地方打开这个 gem 的类,然后修改指定的方法。代码量很小。

想咨询下有没有同类经验的人,我是写在application_controller.rb结尾还是另外新建一个 model 放在lib里再引用好一点?

应该 pull request

#1 楼 @Rei 嗯,对的,我已经提交了,不过在那之前想暂时用其他方法先运行起来

一般我 fork 了之后就先用着自己的 repo。

#3 楼 @Rei 做个本地 gem?我刚刚直接新建了个 controller 把 gem 的类给 override 了,所幸能用~ Thanks

@cestivan 我遇到这种情况,就会把 gem 的代码全部拿过来,自己改,临时放在 lib 目录下引用,而不是放在 gemfile 里面,等 gem 的作者改好后,我再把这个 gem 包加进来...

如果 git 源是有效的 gem 目录结构,可以直接写在 Gemfile 里面

http://bundler.io/v1.3/git.html

Fork, 修改,把那个 Gem 在 Gemfile 里面用 github 地址:

Gemfile

gem 'xxx', github: 'aaa/xxx'

#7 楼 @huacnlee Great, no need to create any thing new.

#5 楼 @neverlandxy_naix : @Rei 's solution better. (waiting for ubuntu installation, no chinese input...)

本地路径也可以在 gemfile 内使用

You need to Sign in before reply, if you don't have an account, please Sign up first.