【问题标题】:Heroku Rails Console Write to Local FileHeroku Rails 控制台写入本地文件
【发布时间】:2015-03-24 13:32:39
【问题描述】:

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

有什么好的方法来做到这一点?我最初想运行我的 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

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

【问题讨论】:

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


    【解决方案1】:

    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

    【讨论】:

    • 愚蠢的问题.. 我在为server, user 等放什么。
    • 服务器将是站点 url http://yoursite.herokuapp.com;用户 ID 和密码将是您的 heroku 凭据。
    • 我可以直接把它放到rails c中吗?直接输入这些值有问题吗?
    • 我在启动 heroku bash 和 rails c 后尝试过这样的。查看修改后的问题
    【解决方案2】:

    相反,我发现最简单的做法就是将内容通过电子邮件发送给自己。

    【讨论】:

    • 除此之外,我还没有为大于 25MB 的文件找到一个好的解决方案,这是 Gmail 的附件大小限制。
    【解决方案3】:

    我不知道这样做是否可取,但实际上您可以在连接到 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。

    【讨论】:

    • 和我在 heroku bash 上时一样吗?但我想你的意思是我可能会错误地忘记我在本地生产时..?
    • 是的,在连接到生产数据的控制台中闲逛对我来说似乎很冒险。但它在紧要关头起作用。
    猜你喜欢
    • 1970-01-01
    • 2013-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-01
    • 2017-08-27
    • 2021-02-09
    • 2014-07-06
    相关资源
    最近更新 更多