如果更改,gem install不会更新.so文件吗?

时间:2015-06-10 00:22:50

标签: ruby gem rubygems

我正在尝试创建包含C扩展名的 gem 。我使用标准Gem::PackageTask制作宝石。

当我安装gem时,它会正确构建.so文件并将其安装在三个位置:

/home/me/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/extensions/x86_64-linux/2.2.0-static/nmatrix-atlas-0.1.0/nmatrix_atlas.so
/home/me/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/nmatrix-atlas-0.1.0/lib/nmatrix_atlas.so
/home/me/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/gems/nmatrix-atlas-0.1.0/ext/nmatrix_atlas/nmatrix_atlas.so

我很好奇为什么要制作三份这样的副本。但无论如何,第一个是当我require 'whatever'时实际加载的那个。问题是当我对代码进行更改,然后重新打包gem,然后再次运行gem install,新代​​码被编译成新的.so而后两个.so被替换为新的,但第一个没有更新。所以ruby仍然看到旧代码。我必须gem uninstall后跟gem install才能让它更新。

这是rubygems中的错误吗?或者是预期的行为?或者我做错了什么?

编辑:对于任何好奇的人,我提交了bug on rubygems。暂无回应。

0 个答案:

没有答案