Heroku Rails控制台写入本地文件

时间:2015-01-26 04:58:01

标签: ruby-on-rails ruby bash heroku output

我想将数据库中的一些信息提取到文本文件中。

这样做的好方法是什么?我最初想过运行我的heroku bash和rails控制台,因为我只需要做一个简单的循环来获取我需要的信息。但我不知道从heroku写入文件的正确方法。它适用于我的本地rails控制台

我已经尝试了

File.open('text.txt', 'w') do |f|
    User.all.each do |u|
        f.puts u.email
    end
end

或类似$stdout = File.new('/path/to/text.txt', 'w')

的内容

但我认为这些文件不会在我的本地目录中结束......

我该怎么做?

替代简单的解决方案也很受欢迎,因为我没想到我做的事情过于复杂

尝试Pakrash的回答

在heroku bash + rails c

我放入

 require 'net/ftp'

ftp = Net::FTP.new('address.herokuapp.com','email@example.com', 'somepassword')

这只是挂起。没有错误..我必须从中获取crl + c

我以前在那里有完整的地址https://adddress.herokuapp.com/,但它是在说getaddrinfo: Name or service not known

我应该以不同的方式进入吗?

3 个答案:

答案 0 :(得分:2)

Heroku在被动模式下支持ftp。因此,在服务器上创建文件,并使用ftp将文件下载到本地计算机。

# FTPing from Heroku
ftp = Net::FTP.new(server, user, pass)
ftp.passive = true
ftp.getbinaryfile(remote_filename, tmp_filename)

参考文献:

  1. http://www.web-l.nl/posts/30-downloading-files-using-ftp-on-heroku
  2. https://stackoverflow.com/a/5570645/429758

答案 1 :(得分:2)

反过来说,我发现最简单的事情就是将内容通过电子邮件发送给自己。

答案 2 :(得分:1)

我不知道这是可取的,但是你可以在连接到Heroku上的远程数据库的同时在本地启动rails控制台实例。从Heroku仪表板获取数据库连接信息,并将其添加到本地database.yml文件中,而不是常规开发节。像

这样的东西
development:
  adapter: postgresql
  encoding: unicode
  database: agblah9dff3
  host: ec2-44-333-444-100.compute-1.amazonaws.com
  pool: 5
  username: 8fk38hg72hd98d
  port: 5462
  password: 88dk3jblahblah8sk83df8sdfj23
  timeout: 5000

但是要知道你正在玩生产代码,所以......你知道,风险很大。

更好的想法可能是只使用为您创建导出的数据库IDE,或者编写一个rake任务来收集文件中的信息并将其转储到S3上。您无法将文件写入磁盘Heroku。