23

herokuコンソールからローカルCSVファイルに配列をエクスポートしようとしています。

私の現在の状況では、自分のアプリケーションについて話しているツイートを探す毎日のレーキタスクがあります。それらのツイートを分析して、いつ入ったかなどを確認したいと思います。

heroku run console
tweets = Tweet.all
code to export tweets into a local CSV file goes here

どんなアイデアでも大歓迎です!

4

10 に答える 10

33

herokuコンソールからローカルファイルシステムにアクセスすることはできません。1つのオプションは、Teeを使用することです。Teeは出力をSTDOUTとファイルの両方に送信するため、印刷されたすべてのローカルログを取得できます。

heroku run console | tee output.txt
于 2012-05-27T17:31:14.460 に答える
20

提案どおりにTeeを使用してみましたが、行き詰まりました

Running `console` attached to terminal... up, run.4165

結局、SSHシェルをローカルホストに実行してから、それをteeにパイプしました。

$ ssh localhost | tee output.txt
$ heroku run console

最善の解決策ではないかもしれませんが、それは私にとってはうまくいきました。

于 2013-07-15T22:35:40.033 に答える
6

FWIWでは、カンマと改行を含む文字列を簡単に配置してから、テキストエディタにコピーして貼り付け、.csvとして保存できますが、「すべてのツイート」は少し扱いに​​くい場合があります。

tweets = Tweet.all
@string = String.new()
@string << Tweet.last.attributes.keys.join(", ") + "\n" # "header" row with attribute names


tweets.each do |t|
  @string << t.attributes.values.join(", ") + "\n"
end

puts @string #will output string with \n newline which you could then copy paste into your editor and save as a csv
于 2013-02-08T16:16:57.620 に答える
2

Tapsを使用してデータベースをローカルマシンにエクスポートし、そこで操作します:https ://devcenter.heroku.com/articles/taps

于 2012-05-27T14:45:11.880 に答える
2

助けてくれてありがとう、私はこのrailscast http://railscasts.com/episodes/362-exporting-csv-and-excelをフォローし、管理パネルからExcelにエクスポートする方法を追加しました。

再度、感謝します。

于 2012-08-11T23:08:32.360 に答える
1

あなたはSCPに砲撃することができます:

my_data = "hello world"
File.write("tmp/data", my_data)
`scp tmp/data me@some-server:`

サーバーが不明であることを通知し、パスワードを要求する場合があります。

于 2014-06-17T22:29:46.197 に答える
1

rails runnerまた、herokuで1行または3行のコードを実行し、結果をファイルにパイプ(またはティー)するために使用することもできます。

heroku run rails runner \'Tweet.all.to_csv\' -a my-app-name | all_tweets.csv

ファイルにRailsログが表示されている場合は無効にし、ファイルに「Running `rails runner`」のような起動ログが表示されている場合はファイルの先頭をトリミングできますが、これは簡単です。

于 2015-03-03T08:16:18.133 に答える
1

HerokuインスタンスでRubyを実行できます。

echo 'p User.first' | heroku run --no-tty 'ruby -W0 -r ./config/environment' > output.txt

これにより、最初のユーザーがoutput.txtファイルに出力されます。

また、Herokuでローカルスクリプトをstdinにパイプすることで実行できます。

cat my_script.rb | heroku run --no-tty 'ruby -W0 -r ./config/environment' > output.txt

output.txtファイルの先頭に表示される不要なテキスト(警告など)が表示される可能性があることに注意してください。手動で、または次のようなトリミングコマンドを使用してトリミングする必要があります。

tail -n +4 -f最初の4行は印刷されません。

完全な例は次のとおりです。

cat my_script.rb | heroku run --no-tty 'ruby -W0 -r ./config/environment' | tail -n +4 -f > output.txt

于 2017-07-12T23:13:03.227 に答える
0

提案どおりにTeeを試しましたが、何らかの理由で、の出力後に常にスタックしていました。

Running `console` attached to terminal... up, run.1

そのため、最終的にcsvコンテンツをテキスト形式の電子メール本文で電子メールで送信しました。すでにメールを設定している場合は、それも簡単な解決策になります。

于 2012-11-16T12:08:00.703 に答える
0

新しいherokuコンソールで次の手順を試してみました。ログを取得できました。

  1. コマンドスクリプトoutput.txtと入力します(これにより、ターミナルログを保存するためのoutput.txtという名前のファイルが作成されます)
  2. herokuコンソールを開き、コマンドを実行します。

  3. 完了したら、ctrl+dと入力します。

ターミナルログはoutput.txtファイルに保存されます。

于 2014-09-18T16:54:41.870 に答える