2012-10-26 111 views
0

我在heroku上有一个应用程序,它将定价数据从网站上删除并定期保存。由于某种原因,每当我在本地运行rake任务时,它会按预期运行,但是当我在heroku上运行该任务时,它会增加额外的输出并由于某种原因而保存该对象两次。当我在本地运行Rake任务在Heroku上运行两次

a,12.80 saved at 2012-10-26 03:36:17 UTC. 
b,38.03 saved at 2012-10-26 03:36:24 UTC. 
c,22.38 saved at 2012-10-26 03:36:31 UTC. 

输出,当我在Heroku上运行

输出

a,12.80 saved at 2012-10-26 03:36:17 UTC. 
b,38.03 saved at 2012-10-26 03:36:24 UTC. 
c,22.38 saved at 2012-10-26 03:36:31 UTC. 
#<Stock:0x000000047bb5e8>,12.80 saved at 2012-10-26 03:36:45 UTC. 
#<Stock:0x000000047baaf8>,38.03 saved at 2012-10-26 03:36:48 UTC. 
#<Stock:0x000000047b00a8>,22.38 saved at 2012-10-26 03:36:52 UTC. 

代码

require 'open-uri' 
require 'date' 

namespace :data do 
    desc "import current blah stock price data to database" 
    task :importblah => :environment do 

    #pass in a stock and price and save it to the database 
    def save_stock(stock, price) 
    #store stock data in database 
    p = stock.prices.build 
    p.price = price 
    p.datetime = Time.now.utc.to_datetime 

    if p.save 
     puts "#{stock.symbol},#{price} saved at #{p.datetime.to_s}." 
    else 
     puts "#{stock.symbol} didn't save." 
    end 
    end 

    actives = Parent.where("test1 = ?", true) 

    actives.each do |m| 

    stocks = m.stocks.where('test2 = ?', false) 
    stocks.each do |stock| 
     if stock.title.start_with?('blah') 
     #grab stock price data from blah.com 
     url = "blah"+stock.symbol 
     doc = Nokogiri::HTML(open(url)) 
     price = doc.at_css(".value").text[/\d+\.\d+/] 
     save_stock(stock, price) 
     end 


    end 
    end 


    end 
end 

我有几乎相同的耙任务不同的网站,它没有两次保存定价数据。如果影响到任何内容,我正在使用Amazon RDS db。

回答

1

原来这是用git跟踪一个问题,我在本地删除的文件却忘了

git rm oldraketask.rake 

刚巧包含具有相同的名称作为一个我一直在运行,这样的Heroku是两者都运行rake任务rake任务连续进行,首先是新文件,然后是旧文件中仍在heroku服务器上的文件。