【发布时间】:2017-05-15 08:46:36
【问题描述】:
在 ruby 中,一些 gem 选择“污染全局命名空间”。
这是什么意思?
我怎样才能看到它发生在哪里?
为什么 gem 需要这样做?
当面对两个污染全局命名空间并发生冲突的 gem 时,当我选择“隔离”一个时,我会做出什么权衡?
例如:
我正在使用两个都污染全局命名空间的 gem:pry 和 gli,所以我无法再将我的 binding.prys 放在我想要的位置。
一个solution是将整个cli包装在一个模块中:
module Wrapper
include GLI::App
extend self
program_desc "..."
...
exit run ARGV
end
现在我可以在任何我想要的地方使用我的binding.prys。
为什么会这样?
当我选择“隔离 gli”时,我做了哪些权衡?还是“隔离GLI::App模块”?
【问题讨论】:
标签: ruby rubygems pry global-namespace