基本上我正在寻找一种适用于范围链的无操作类型的关系.
可以说我有一系列范围:
Post.approved.published.all
Run Code Online (Sandbox Code Playgroud)
现在,出于调试目的,我希望published
范围根本不做任何事情,因此链只会返回approved
帖子,无论它们是否published
存在.
我将通过以下方法返回什么:
def self.published
# what to return?
end
Run Code Online (Sandbox Code Playgroud) 当人们提交我正在观看的存储库时,我想要弹出通知.不托管在任何特定网站上,如github或任何东西,因此需要将存储库URL添加到监视存储库列表的能力.正如标题所说,这是针对Ubuntu的,但欢迎跨平台!
使用以下代码:
def index
@q = ""
@q = params[:search][:q] if params[:search]
q = @q
@search = Sunspot.search(User) do
keywords q
end
@users = @search.results
end
Run Code Online (Sandbox Code Playgroud)
如果使用@q而不是q,则搜索始终返回空查询("")的结果.为什么是这样?@q变量是否对do ... end块不可用?
我有一个1.6GB的xml文件,当我用Sax Machine解析它时,它似乎不是流式传输或以块的形式吃掉文件 - 而是它似乎将整个文件加载到内存中(或者可能在某处存在内存泄漏) ?)因为我的红宝石过程爬上了2.5gb的ram.我不知道它在哪里停止增长,因为我的内存不足.
在较小的文件(50mb)上,它似乎也在加载整个文件.我的任务迭代xml文件中的记录并将每个记录保存到数据库.它需要大约30秒的"空闲",然后数据库查询突然开始执行.
我认为SAX应该允许你使用这样的大文件,而不会将整个内容加载到内存中.
有什么我可以忽略的吗?
非常感谢
更新以添加代码示例
class FeedImporter
class FeedListing
include ::SAXMachine
element :id
element :title
element :description
element :url
def to_hash
{}.tap do |hash|
self.class.column_names.each do |key|
hash[key] = send(key)
end
end
end
end
class Feed
include ::SAXMachine
elements :listing, :as => :listings, :class => FeedListing
end
def perform
open('~/feeds/large_feed.xml') do |file|
# I think that SAXMachine is trying to load All of the listing elements into this one ruby object.
puts 'Parsing'
feed = …
Run Code Online (Sandbox Code Playgroud)