如何将数据导出到CSV并从Heroku上传到单独的FTP网站?
-
22-10-2019 - |
题
我有一些数据可以从DB导出并保存为CSV文件,然后上传到FTP服务器。该网站托管在Heroku上,我知道您只能写入TMP(或日志?)目录。
这在我当地的机器上很棒,但在Heroku上不起作用。
这是我的耙子任务:
require 'csv'
require 'net/ftp'
task :export_data => :environment do
path = "tmp/"
filename = 'test_' + Date.today.to_s + '.dat'
messages = Message.where( :foo => bar)
CSV.open(path + filename, "wb", :col_sep => '|') do |csv|
messages.each do |m|
csv << [m.id.to_s, m.name]
puts "Processing message " + m.id.to_s
end
end
puts "Uploading " + filename
ftp = Net::FTP.new('ftp.hostname.com')
ftp.login(user = "******", passwd = "*******")
ftp.puttextfile(path + filename, filename)
ftp.quit()
puts "Finished."
end
有2个问题:
Q1。通过记录进行迭代非常慢。 5分钟200。我不知道这是否可用。
Q2。 FTP有错误并崩溃。它开始将文件放在FTP服务器上,但不会向其写任何数据。这是一个空文件。日志读取:
Starting process with command `rake jobs:work`
2011-10-17T21:17:11+00:00 app[worker.1]: (in /app)
2011-10-17T21:17:13+00:00 heroku[worker.1]: State changed from starting to up
2011-10-17T21:17:13+00:00 app[worker.1]: rake aborted!
2011-10-17T21:17:13+00:00 app[worker.1]: Don't know how to build task 'jobs:work'
2011-10-17T21:17:13+00:00 app[worker.1]: /usr/ruby1.9.2/lib/ruby/1.9.1/rake.rb:1720:in `[]'
2011-10-17T21:17:13+00:00 app[worker.1]: /usr/ruby1.9.2/lib/ruby/1.9.1/rake.rb:2040:in `invoke_task'
2011-10-17T21:17:13+00:00 app[worker.1]: /usr/ruby1.9.2/lib/ruby/1.9.1/rake.rb:2019:in `block (2 levels) in top_level'
2011-10-17T21:17:13+00:00 app[worker.1]: /usr/ruby1.9.2/lib/ruby/1.9.1/rake.rb:2019:in `each'
2011-10-17T21:17:13+00:00 app[worker.1]: /usr/ruby1.9.2/lib/ruby/1.9.1/rake.rb:2019:in `block in top_level'
2011-10-17T21:17:13+00:00 app[worker.1]: /usr/ruby1.9.2/lib/ruby/1.9.1/rake.rb:2058:in `standard_exception_handling'
2011-10-17T21:17:13+00:00 app[worker.1]: /usr/ruby1.9.2/lib/ruby/1.9.1/rake.rb:2013:in `top_level'
2011-10-17T21:17:13+00:00 app[worker.1]: /usr/ruby1.9.2/lib/ruby/1.9.1/rake.rb:1992:in `run'
2011-10-17T21:17:13+00:00 app[worker.1]: /usr/ruby1.9.2/bin/rake:31:in `<main>'
2011-10-17T21:17:13+00:00 heroku[worker.1]: Process exited
2011-10-17T21:17:14+00:00 heroku[worker.1]: State changed from up to crashed
文件无法使用或文件系统的其他问题是否存在问题?在本地机器上工作。
有任何想法吗?
谢谢。
解决方案 2
答案:
Q1:不慢。它只看起来很慢,因为慢部分正在输出到控制台。
Q2:FTP是通过设置固定的 ftp.passive = true
其他提示
答案在
2011-10-17T21:17:13+00:00 app[worker.1]: Don't know how to build task 'jobs:work'
由于某种原因,您的Rakefile不知道工作:工作。考虑到这是一个延迟_job任务,您确定正确安装了delayed_job安装的每个步骤吗?
您是否在生产模式下在本地尝试过此?
不隶属于 StackOverflow