小编jak*_*ils的帖子

如何使用Arel(大概)创建一个不影响Rails 3中查询的ActiveRecord范围?

基本上我正在寻找一种适用于范围链的无操作类型的关系.

可以说我有一系列范围:

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)

activerecord arel scopes ruby-on-rails-3

15
推荐指数
1
解决办法
3225
查看次数

是否有工具可以在Ubuntu上观看远程Git存储库并在提交时执行弹出通知?

当人们提交我正在观看的存储库时,我想要弹出通知.不托管在任何特定网站上,如github或任何东西,因此需要将存储库URL添加到监视存储库列表的能力.正如标题所说,这是针对Ubuntu的,但欢迎跨平台!

git ubuntu notifications commit

14
推荐指数
1
解决办法
5625
查看次数

@instance_variable在红宝石块内不可用?

使用以下代码:

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块不可用?

ruby scope block instance

13
推荐指数
2
解决办法
5120
查看次数

使用SaxMachine解析大文件似乎将整个文件加载到内存中

我有一个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)

ruby xml sax large-files nokogiri

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