簡體   English   中英

Heroku的Rails:如何下載由rake任務創建的CSV

[英]Rails with Heroku: How to download a CSV created by a rake task

我在Heroku上部署了“Harrys Prelauncher”並試圖進行拆解(目前僅進行測試)。 請參見: https//github.com/harrystech/prelaunchr#teardown

運行rake任務后......

heroku run rake prelaunchr:create_winner_csvs

...在“/ lib / assets”中創建了一個csv文件,但我不知道如何訪問該文件(它在開發中本地工作)。

我該如何下載或訪問該文件?

Heroku使用“短暫的”文件系統,不保證在運行時保留更改 簡單地說,如果它沒有被推送到git(我假設你正在使用帶有heroku的git),那么它不能保證存在於你的應用程序的所有實例中。 它可能存在於其中一個中,但您可能沒有簡單的方法來訪問該特定的文件系統。 你不應該,真的。

它就是這樣完成的,這樣可以無縫地啟動同一個應用程序的多個實例。 當然,這需要一些規則:在外部存儲任何有意義的狀態:在數據庫中,在外部磁盤上,任何地方。 這樣做的好處是橫向可伸縮性:如果您缺少資源,您可以啟動另一個(通常)行為完全相同的Web dyno。 新的dynos是從git push打包的bundle開始的,因此不包含你在另一個實例中所做的任何更改。

解決方法可能是運行heroku run bash ,以便最終進入鏈接到另一個bundle實例的交互式shell。

然后,您可以制作該文件(通過運行您的rake任務)並以您認為合理的任何方式訪問其內容。 可以使用cat將文本文件回顯到控制台中,並在其他任何位置復制粘貼。 那是一種骯臟的方式。

一個更清潔的方法是操縱應用程序通過電子郵件發送有問題的文件。 如果Rails應用程序本身調用了rake任務,那么這是少數合理的方法之一。

我最近在為客戶開發Prelaunchr廣告系列時遇到了這個問題。 假設您有一個本地版本的應用程序,您可以將Heroku數據庫“拉”到本地計算機,將其設置為database.yml中的開發數據庫,​​並從本地應用程序運行rake任務,該任務現在應該具有與heroku版本相同的數據庫。 這是拉取db的命令(使用您自己的名稱替換name_for_database和heroku_app_name):

heroku pg:pull HEROKU_POSTGRESQL_COPPER_URL name_for_database --app heroku_app_name

確保重新啟動本地服務器以查看填充的新數據庫信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM