我如何获得irb -really-重新加载我的类代码?

时间:2013-08-11 21:30:33

标签: ruby irb

在ruby中有一些看起来像(Product类中的方法)的代码:

  def merge_prices_with_suppliers(suppliers)
    data = []
    phs = self.prices
    suppliers_in = phs.map { |ph| ph.supplier_id}.uniq()
    for serv in suppliers_in  
      logger.debug serv
      data_for_supplier = phs.select{|ph| ph.supplier_id== serv}
      debugger
      s = (suppliers.select{|s| s.id.to_s == serv }[0])
      if s.nil? || s.name.nil?
         name = "none" 
      else
         name = s.name
      end
      logger.debug "#{name} #{serv}"
      data.push([name, data_for_supplier.map{|ph| {date: ph.date, amount: ph.amount} }])
    end
   data 
   end 

我正在重新加载并重新运行它:

 reload! and g = Product.by_name( 'thenamehere') and  g.merge_prices_with_suppliers(suppliers)

好的,所以我做了一些更改,因为select语句无法正常工作。然后我reload!。当我重新加载并重做对象的“获取”时,新代码不存在。 by_name代码非常简单:Game.where(name: name).first(使用mongoid)。我自己也试过了reload!,没有运气。我已经尝试将对象设置为nil,然后重新加载,没有运气。我试过制作一个完全不同的物体,没有运气。

但如果我关闭irb并再次启动它,新代码就在那里。

为什么reload!实际上没有重新加载我的代码?我在这里已经阅读了有关此问题的其他问题,但他们没有帮助。

0 个答案:

没有答案