ruby中的树和图数据结构

我很难找到在ruby中使用的树数据结构。 我可以研究一些众所周知的吗? 我的要求很简单。 我想创建一个树(或者它可能是一个图形)并找到一些节点之间的距离。 例如,我可能有一个如下所示的树/图 A / \ B—–C / \ \ DEF 我希望能够找到根节点(A)和所有其他节点之间的距离。 所以(A,B)之间的距离应该是1,(A,E)之间的距离是2,等等。即使从节点(A)你可以通过(A,B,C)到达(C),长度应该是因为有(A,C)的直接路径,所以仍然只是1。 我可以在ruby中使用树/图形gem吗?

是否可以在ruby中取消定义变量?

在ruby中,有没有办法在定义变量或常量后“取消定义”? 在我们的轨道环境中,我们根据环境定义三种含量中的一种: TESTING , DEVELOPMENT或PRODUCTION 。 那么,在控制器代码中,我们使用defined? 看看我们所处的环境,即: defined? PRODUCTION defined? PRODUCTION 。 现在,我想对一些特定于环境的行为进行unit testing。 我最初的尝试是在我的测试中设置适当的常量,然后在拆解时重置它们。 但是,我无法弄清楚如何重置DEVELOPMENT和PRODUCTION这样的defined? 返回false。 显然,一个解决方案是只检查是否适当的常量也是真的,除了检查它是否已定义,但这将导致必须触及相当数量的现有代码。 编辑:我意识到这绝对不是正确的做事方式。 唉,改变它是一项非常重要的任务,所以我正在寻找一种简单的方法来单独测试现在的情况。 另外,我也很好奇关于是否有可能取消定义变量/常数的低级语言问题。

Logstash的Javafilter

你知道如何使用Logstash的rubyfilter,这使我能够在Ruby中编写代码,它通常包含在配置文件中,如下所示 filter { ruby { code => “….” } } 现在我有两个Jar文件,我想包含在我的filter中,以便我可以根据我在这些Jar文件中的操作处理我的输入。 但是,我不能(显然)在ruby代码中包含Jar文件。 我一直在寻找解决方案。 有帮助吗? 谢谢。

如何对嵌套哈希使用fetch方法?

我有以下哈希: hash = {‘name’ => { ‘Mike’ => { ‘age’ => 10, ‘gender’ => ‘m’ } } } 我可以通过以下方式访问年龄: hash[‘name’][‘Mike’][‘age’] 如果我使用Hash#fetch方法怎么办? 如何从嵌套哈希中检索密钥? 正如塞尔吉奥所说,做到这一点的方式(不为自己创造一些东西)将是一系列的fetch方法: hash.fetch(‘name’).fetch(‘Mike’).fetch(‘age’)

如何查找广告的最终目的地(url)(以编程方式)

这可能是微不足道的,或者不是,但我正在研究一种软件,它将validation通过我的Web应用程序显示的广告的“行尾”域。 理想情况下,我有一个我不想提供广告的域名列表(假设Norton.com就是其中之一),但大多数广告网络通过缩短的,含义模糊的URL(adsrv.com)提供广告,最终重定向到Norton.com。 所以问题是:有任何一个构建,或者知道如何构建,类似刮刀的工具将返回广告的最终目标url。 初步发现:某些广告采用Flash,JavaScript或纯HTML格式。 模拟浏览器是完全可行的,并且可以对抗不同格式的广告。 并非所有Flash或JS广告都有noflash或noscript替代品。 (浏览器可能是必要的,但如上所述,这非常好……使用像WatiN或WatiR或WatiJ或Selenium等的东西……) 喜欢开源,这样我就可以自己重建一个。 真的很感激帮助! 编辑*此脚本需要点击广告,因为它可能是Flash,JS或只是HTML plain。 因此Curl不太可能是一个选项,除非Curl可以点击?

ruby中的树状结构与没有gem的数组格式的父子?

我有一个数组,其中包含这样的项目列表 arr = [ {:id=>1, :title=>”A”, :parent_id=>nil}, {:id=>2, :title=>”B”, :parent_id=>nil}, {:id=>3, :title=>”A1″, :parent_id=>1}, {:id=>4, :title=>”A2″, :parent_id=>1}, {:id=>5, :title=>”A11″, :parent_id=>3}, {:id=>6, :title=>”12″, :parent_id=>3}, {:id=>7, :title=>”A2=121″, :parent_id=>6}, {:id=>8, :title=>”A21″, :parent_id=>4}, {:id=>9, :title=>”B11″, :parent_id=>2}, {:id=>10, :title=>”B12″, :parent_id=>2}, …] 如果parent_id为nil,那么它应该是父节点,如果parent_id不是nil,则它应该在特定父节点下。 基于id和parent_id,我想提供这样的响应: -A -A1 -A11 -A12 -A123 -A2 -A21 -B -B1 -B11 -B12 我怎么能产生上面提到的回应?

从公司防火墙后面安装gem

我怀疑企业防火墙阻止了gem的安装。 我定义了HTTP_PROXY,我可以通过以下命令查看远程gems: jruby -S gem list -r 但是当我去安装gem时,我得到了404: jruby -S gem install rails 除了维护内部gem存储库之外,还有一个很好的解决方法可以解决这个问题吗?

如何随机生成文件链接?

我有一个PDF文件,我不想通过我网站上的URL公开访问。 作为(轻微)安全层,我想通过电子邮件向用户发送一个独特的,随机生成的URL,他们可以从中下载PDF,我将在AWS上存储或类似的东西。 我觉得我被困在routes.rb监狱,我不知道如何动态生成URL,也不知道如何正确创建随机URL,跟踪它们,或将它们链接到本地​​或AWS上存储的文件。 有没有人有任何建议来解决这个问题?

在Ruby Array中收集重复项的最快/一行方式?

像这样转换数组的最快/单线方式是什么: [1, 1, 1, 1, 2, 2, 3, 5, 5, 5, 8, 13, 21, 21, 21] …进入像这样的对象数组: [{1 => 4}, {2 => 2}, {3 => 1}, {5 => 3}, {8 => 1}, {13 => 1}, {21 => 3}]

ruby如何生成树形结构表单数组?

我有一个数组,其中包含这样的项目列表 arr = [ {:id=>1, :title=>”A”, :parent_id=>nil}, {:id=>2, :title=>”B”, :parent_id=>nil}, {:id=>3, :title=>”A1″, :parent_id=>1}, {:id=>4, :title=>”A2″, :parent_id=>1}, {:id=>5, :title=>”A11″, :parent_id=>3}, {:id=>6, :title=>”12″, :parent_id=>3}, {:id=>7, :title=>”A2=121″, :parent_id=>6}, {:id=>8, :title=>”A21″, :parent_id=>4}, {:id=>9, :title=>”B11″, :parent_id=>2}, {:id=>10, :title=>”B12″, :parent_id=>2}, … ] 如果parent_id为nil那么它应该是父节点,如果parent_id不是nil则它应该在特定父节点下。 基于id和parent_id ,我想提供这样的响应: -A -A1 -A11 -A12 -A123 -A2 -A21 -B -B1 -B11 -B12 我怎么能产生上面提到的回应? 谢谢