相关疑难解决方法(0)

获取Ruby中的数组差异

可能重复:
diff一个ruby字符串或数组

我有一个旧的数组:[1, 2, 3, 4, 5]和新的:[1, 2, 4, 6]

如何与Ruby区别开来:5, 3已删除并6添加了?

ruby

43
推荐指数
1
解决办法
3万
查看次数

比较红宝石的哈希

可能重复:
如何比较两个哈希值?

我有两个红宝石哈希(基本上是模型),我试图找到它们之间的差异,一个是对象的旧实例,另一个具有分配给某些属性的新值.我正在尝试确定哪些键已经更改,但似乎没有任何内置于Hash中的内容.我可以想到一些蛮力的解决方案,但想知道是否有一个优雅的解决方案.

理想情况下,我需要能够采用两个哈希:

element1 = {:name => "Original", :description => "The original one!"}
element2 = {:name => "Original", :description => "The new one!"}
Run Code Online (Sandbox Code Playgroud)

并能够比较/区分它们并得到像这样的东西:

{:description => "The new one!"}
Run Code Online (Sandbox Code Playgroud)

现在,我真正想到的是在一个哈希中迭代键并将该键的值与第二个哈希中的相应键进行比较,但这似乎太强暴了.

有任何想法吗?非常感谢!

ruby hash comparison

32
推荐指数
3
解决办法
3万
查看次数

如何在Ruby中进行模糊子串匹配?

我找到了很多关于模糊匹配的链接,将一个字符串与另一个字符串进

我有一个非常长的字符串,它是一个文档和一个子字符串.子字符串来自原始文档,但已被多次转换,因此可能引入了奇怪的工件,例如此处的空格,字符串.子字符串将匹配原始文档中文本的一部分99%或更多.我不匹配以查看此字符串是哪个文档,我试图在文档中找到字符串开始的索引.

如果字符串是相同的,因为没有引入随机错误,我会使用document.index(substring),但是如果甚至有一个字符差异,则会失败.

我认为通过删除除字符串和子字符串中的az之外的所有字符来比较差异,然后使用压缩字符串时生成的索引将压缩字符串中的索引转换为真实文档中的索引.这种情况很好用,其中差异是空格和标点符号,但只要一个字母不同就失败了.

该文档通常是几页到一百页,而子串从几个句子到几页.

ruby string fuzzy-search

17
推荐指数
2
解决办法
9778
查看次数

在Rails中显示两个文本体之间的差异

有没有一种简单的方法可以做到这一点 - 创建标记文本,显示两段文本之间的变化.可能是一个内置助手?看着但找不到!

ruby-on-rails

14
推荐指数
3
解决办法
3002
查看次数

Ruby中最好的Diff库是什么?

我看过diff-lcs(http://raa.ruby-lang.org/project/diff-lcs),但它记录很少,似乎没有维护.

是否有任何好的,积极维护的红宝石宝石用于区分文本或html文件?

ruby diff rubygems

14
推荐指数
2
解决办法
9337
查看次数

Rails app中的内存不断增加

我最近推出了一个新的Ruby on Rails应用程序,它在开发模式下运行良好.在发布之后,我一直在体验正在使用的内存不断增加:

来自New Relic的屏幕转储,Dyno内存使用情况

更新:当从New Relic进行此屏幕转储时. 我已经安排了每小时重启web dyno(两个web dynos中的一个). 因此,它没有达到500Mb的崩溃水平,它实际上得到了一些sig锯模式. 但问题根本没有得到解决,只有一些症状. 你可以看到早上不是那么忙,但下午更忙.

更新:当从New Relic获取此屏幕转储(下面的那个)时.我已经安排了每小时重启web dyno(两个web dynos中的一个).因此,它没有达到500Mb的崩溃水平,它实际上得到了一些sig锯模式.但问题根本没有得到解决,只有一些症状.你可以看到早上不是那么忙,但下午更忙.我在11.30上传了一个小细节,即使它在统计数据中显示也不会影响问题.

还可以注意到,即使图形显示AVG存储器,也是MIN存储器继续增加.即使图形似乎在图表中暂时下降,最小内存保持不变或增加.MIN记忆永不减少!

该应用程序将(没有dyno重新启动)内存增加,直到它达到Heroku的最高级别,并且应用程序崩溃执行过期类型的错误.

我不是一个优秀的程序员,但我之前已经制作了一些应用程序而没有这类问题.

执行故障排除

答:我认为问题在于application_controller中的before_filter(应用程序控制器中的变量会导致Rails中的内存泄漏吗?)但这不是问题.

B.我安装了oink但它没有给出任何结果(根本).它创建了一个oink.log,但是当我运行"heroku run oink -m log/oink.log"时,无论什么阈值都没有给出任何结果.

C.我尝试过bleak_house但它已被弃用,无法安装

D.我用谷歌搜索并阅读了主题中的大多数文章,但我不是更明智的.

E.我很想测试memprof但是我无法安装它(我有Ruby 1.9x并且不知道如何将它降级到1.8x)

我的问题:

Q1.我真正想知道的是每个请求增加的变量的名称,或者至少哪个控制器使用最多的内存.

Q2.一个控制器如下面的代码会增加内存吗?

related_feed_categories = []
@gift.tags.each do |tag|
  tag.category_connections.each do |cc|
    related_feed_categories << cc.category_from_feed
  end
end
Run Code Online (Sandbox Code Playgroud)

(抱歉,因为某些原因,所以不会重新格式化代码以便于阅读).

我之后是否需要使用"related_feed_categories = nil""kill""related_feed_categories"或垃圾收集器是否处理该问题?

Q3.我要找的主要内容是什么?现在我无法缩小范围.我不知道要深入研究哪部分代码,我真的不知道该寻找什么.

Q4.万一我真的无法解决问题.有没有在线咨询服务,我可以发送我的代码,让他们找到问题?

谢谢!

更新.收到评论后,它可能与会话有关.这是我认为可能不好的代码的一部分:

# Create sessions for last generation
friend_data_arr = [@generator.age, @generator.price_low, @generator.price_high]
friend_positive_tags_arr = []
friend_negative_tags_arr = []
friend_positive_tags_arr << @positive_tags
friend_negative_tags_arr << @negative_tags    
session["last_generator"] = [friend_data_arr, friend_positive_tags_arr, friend_negative_tags_arr]

# Clean …
Run Code Online (Sandbox Code Playgroud)

memory ruby-on-rails heroku

11
推荐指数
2
解决办法
7608
查看次数

在Ruby中查找字符串之间的区别

我需要取两个字符串,比较它们,并打印它们之间的差异.

所以说我有:

teamOne = "Billy, Frankie, Stevie, John"
teamTwo = "Billy, Frankie, Stevie"

$ teamOne.eql? teamTwo 
=> false
Run Code Online (Sandbox Code Playgroud)

我想说"如果这两个字符串不相等,则打印它们之间的不同之处.在这种情况下,我只是想打印"John".

ruby string

10
推荐指数
3
解决办法
2万
查看次数

Ruby上的difflib

Ruby上有一个类似于Python的difflib的库吗?

特别是,我需要一个方法类似于difflib.get_close_matches.有什么建议?

ruby python string string-matching fuzzy-comparison

5
推荐指数
1
解决办法
658
查看次数