herokuコンソールからローカルCSVファイルに配列をエクスポートしようとしています。
私の現在の状況では、自分のアプリケーションについて話しているツイートを探す毎日のレーキタスクがあります。それらのツイートを分析して、いつ入ったかなどを確認したいと思います。
heroku run console
tweets = Tweet.all
code to export tweets into a local CSV file goes here
どんなアイデアでも大歓迎です!
herokuコンソールからローカルCSVファイルに配列をエクスポートしようとしています。
私の現在の状況では、自分のアプリケーションについて話しているツイートを探す毎日のレーキタスクがあります。それらのツイートを分析して、いつ入ったかなどを確認したいと思います。
heroku run console
tweets = Tweet.all
code to export tweets into a local CSV file goes here
どんなアイデアでも大歓迎です!
herokuコンソールからローカルファイルシステムにアクセスすることはできません。1つのオプションは、Teeを使用することです。Teeは出力をSTDOUTとファイルの両方に送信するため、印刷されたすべてのローカルログを取得できます。
heroku run console | tee output.txt
提案どおりにTeeを使用してみましたが、行き詰まりました
Running `console` attached to terminal... up, run.4165
結局、SSHシェルをローカルホストに実行してから、それをteeにパイプしました。
$ ssh localhost | tee output.txt
$ heroku run console
最善の解決策ではないかもしれませんが、それは私にとってはうまくいきました。
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
Tapsを使用してデータベースをローカルマシンにエクスポートし、そこで操作します:https ://devcenter.heroku.com/articles/taps
助けてくれてありがとう、私はこのrailscast http://railscasts.com/episodes/362-exporting-csv-and-excelをフォローし、管理パネルからExcelにエクスポートする方法を追加しました。
再度、感謝します。
あなたはSCPに砲撃することができます:
my_data = "hello world"
File.write("tmp/data", my_data)
`scp tmp/data me@some-server:`
サーバーが不明であることを通知し、パスワードを要求する場合があります。
rails runner
また、herokuで1行または3行のコードを実行し、結果をファイルにパイプ(またはティー)するために使用することもできます。
heroku run rails runner \'Tweet.all.to_csv\' -a my-app-name | all_tweets.csv
ファイルにRailsログが表示されている場合は無効にし、ファイルに「Running `rails runner`」のような起動ログが表示されている場合はファイルの先頭をトリミングできますが、これは簡単です。
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
提案どおりにTeeを試しましたが、何らかの理由で、の出力後に常にスタックしていました。
Running `console` attached to terminal... up, run.1
そのため、最終的にcsvコンテンツをテキスト形式の電子メール本文で電子メールで送信しました。すでにメールを設定している場合は、それも簡単な解決策になります。
新しいherokuコンソールで次の手順を試してみました。ログを取得できました。
herokuコンソールを開き、コマンドを実行します。
完了したら、ctrl+dと入力します。
ターミナルログはoutput.txtファイルに保存されます。