新手问题 如何在 Rails 项目中方便的更新自己的 gem 包?

cqualpha · March 31, 2017 · Last by ericguo replied at March 31, 2017 · 2223 hits

现在做的一个项目比较麻烦,所以做了个 gem 包封装了一些常用的 lib
但是这个 gem 包平时也做调整,因为还没稳定 所以 版本号也没变

主项目的 Gemfile 我是这么引用的

gem 'cqualpha_client', :git => '[email protected]:cqualpha/client.git', :branch => 'develop'

实际过程当中,当我更新 cqualpha_client 的 develop 分支后,在主项目中执行 bundle install,主项目的对应 gem 包是没变化的 必须我手动去执行 bundle update cqualpha_client 或者直接运行 bundle update 才能更新

请问有何方式能够每次自动的更新 gem 包?或者每次 bundle install 的时候能够去拉取最新版本的 gem ?

git ref or tag, 但我觉得更麻烦了。

用 git hook 实现. 比如在主仓库建一个 pre-commit 的 hook, 脚本内容执行 bundle update .

或使用 guard ,来自动执行相关命令。

呵呵,就这件事情可以提现一下像 npm 那种 local modules 的好处。它可以 link 本地的项目作为其他项目的 dependency,连 push 都不需要,本地改本地即时更新。

我们很多组件是写成了 ember addon,但是暂不推送和发布,而是直接 link 到 app 里,这边改 addon,app 那边还会自动刷新。的确很方便。

不知道全局管理的包管理器是否支持 symbolic link,可以试一试看。

gem 以 git submodule 的方式放在你的项目下,然后用 path 引用:

gem "your_lib", path: "./vendor/your_lib"

版本的话,用 git 管理比强制每次 bundle install 自动更新要更靠谱点。

http://bundler.io/v1.5/gemfile.html

@darkbaby123 脱离 git,只靠本地 link 探测改变有没有可能?

@nightire 应该没问题的。这跟你说的 npm link 其他 module 是一个意思。不过不重启 server 就更新代码我记得只有 Rails engine 才行。

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