想要确定在两个独立的宝石中使用哪个功能

时间:2014-02-20 02:49:30

标签: c ruby gem

我有两个自制的单独的宝石,但是它们都有一个名为foo的相同函数,而foo是用C实现的,它位于相同的命名空间中,所以它是一种方法来确定我是否需要两个宝石,我使用哪个版本的foo,或者它是一种确保我实际使用某个gem的foo函数的方法,有人建议使用{ {1}}。

虽然我知道它们是多余的,但到目前为止我不想因为某些原因而删除它们。

1 个答案:

答案 0 :(得分:1)

我搜索“ruby以编程方式查找函数定义”,并找到了这个答案:How can I get source code of a method dynamically and also which file is this method locate in

这一点,加上一些简短的IRB实验,让我相信你想做的事情如下:

filename, lineno = method(:foo).source_location

if filename == "blah"
   puts "looks like :foo is defined in 'blah'"
elsif filename == "blargh"
   puts "looks like :foo is defined in 'blargh'"
end

以下是source_location的更多文档:http://ruby-doc.org/core-1.9.3/Method.html#method-i-source_location