2012-02-08 15 views
7

Mam narzędzie importu, którego chciałbym użyć do tworzenia rekordów na heroku.Załaduj lokalny plik podczas zadania rake heroku

Chcę użyć tego do zaimportowania danych z pliku na mojej maszynie programistycznej bez konieczności sprawdzania pliku w repozytorium. Czy jest jakiś sposób na zrobienie tego z zadaniem rake lub klejnotem Heroku?

Mogę przesłać plik w formularzu internetowym, który może przekroczyć limit czasu lub zapisać plik na S3, ale wydaje się to być przesadne.

Jakikolwiek łatwy sposób to zrobić?

Odpowiedz

2

Nie, dostęp do lokalnych plików na maszynie programistycznej nie jest możliwy z niczego uruchomionego przy pomocy heroku run (co obejmuje zadania rake, zakładając, że jesteś na cedrze).

ja podjąć następujące metody:

  • dane nasiona są przechowywane w repo i załadowane dane

  • dla nasion z użyciem seed_fu jest przesyłany do S3 poprzez postaci wstęgi i połączonych do modelu DataFile przy użyciu spinacza (trochę przesady, ale używałam go do zdjęć w innym miejscu). Mogę następnie użyć zadań rake lub opóźnionych pracowników do przetwarzania plików. To zdecydowanie trochę nad głową.

5

Możesz odczytywać ze standardowej wersji swojego urządzenia.

heroku run rake whatever <./file 
+2

Jaki byłby składni dostępu do tych danych plików w definicji zadania? – zrisher

+1

'$ stdin.read' działa dla mnie. – dojosto

1

Znalazłem bardzo proste podejście do tego, aby użyć gist dla danych wejściowych. Kopiujesz i wklejasz swoje dane w istotę, a następnie przekazujesz link do surowego istoty jako parametr do zadania rake. Następnie w zadaniu rake otwórz plik zdalny.

Na przykład, jeśli ładujesz plik yaml:

YAML.parse(open(file_name)).to_ruby.with_indifferent_access