2012-02-08 16 views
7

herokuでレコードを作成するために使用したいインポートユーティリティがあります。heroku rakeタスク中にローカルファイルをロード

リポジトリにファイルをチェックすることなく、開発マシン上のファイルからデータをインポートするのに使用します。レーキの仕事や英雄の宝石でこれを行う方法はありますか?

私はタイムアウトする可能性のあるWebフォームでファイルをアップロードすることができました。または、S3にファイルを保存することができましたが、それはかなり過剰です。

これを行う簡単な方法はありますか?

答えて

2

いいえ、heroku runで実行されているもの(開発中のマシンでは、紅葉のタスクを含む)からローカルマシンのファイルにアクセスすることはできません。

私は、次のアプローチを取ってきました:

  • シードデータはレポに格納し、seed_fuに

  • 非シード・データがWebフォームからS3にアップロードし、リンクされているを使用してロードされますペーパークリップを使ってDataFileモデルにしました(ちょっと残酷でしたが、私は他の場所でイメージ用に使っていました)。私は、ファイルを処理するためにレーキタスクや遅延作業者を使用することができます。間違いなくオーバーヘッドです。

5

あなたのマシンの標準入力から読むことができます。

+2

は、どのようなタスク定義の中に、このファイルデータにアクセスするための構文でしょうか? – zrisher

+1

'$ stdin.read'が私に役立ちます。 – dojosto

1

私は入力データにgistを使用することが本当に簡単な方法であることを発見しました。あなたのデータをコピーして要点に貼り付けて、あなたのレーキタスクのパラメータとして生の要点へのリンクを渡します。次に、レーキタスクでリモートファイルを開きます。例えば

、あなたはYAMLファイルロードする場合:

YAML.parse(open(file_name)).to_ruby.with_indifferent_access 
関連する問題