我想将数据库中的一些信息提取到文本文件中。
这样做的好方法是什么?我最初想过运行我的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
我应该以不同的方式进入吗?
答案 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 :(得分: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。