2012-02-08 30 views
7

Tôi có tiện ích nhập khẩu mà tôi muốn sử dụng để tạo bản ghi trên heroku.Tải tệp cục bộ trong tác vụ rake của heroku

Tôi muốn sử dụng dữ liệu đó để nhập dữ liệu từ một tệp trên máy phát triển của mình mà không phải kiểm tra tệp vào kho lưu trữ. Có cách nào để làm điều này với một công việc cào hoặc đá quý heroku?

Tôi có thể tải tệp lên dưới dạng web có thể hết thời gian chờ hoặc tôi có thể lưu trữ tệp trên S3, nhưng điều đó có vẻ khá quá mức.

Bất kỳ cách dễ dàng nào để thực hiện việc này?

Trả lời

2

Không, không thể truy cập tệp cục bộ trên máy phát triển của bạn từ bất kỳ thứ gì chạy với heroku run (bao gồm các tác vụ cào, giả định bạn đang ở trên tuyết tùng).

tôi đã đưa ra những phương pháp sau đây:

  • dữ liệu hạt giống được lưu trữ trong repo và nạp bằng seed_fu dữ liệu

  • phi hạt giống được tải lên S3 thông qua một mẫu web, và liên kết đến một mô hình DataFile sử dụng kẹp giấy (một chút quá mức cần thiết, nhưng tôi đã sử dụng nó cho hình ảnh ở nơi khác). Sau đó tôi có thể sử dụng công việc cào hoặc công nhân làm việc chậm trễ để xử lý các tệp. Nó chắc chắn là một chút trên không.

5

Bạn có thể đọc từ tiêu chuẩn trên máy của mình.

heroku run rake whatever <./file 
+2

Điều gì sẽ là cú pháp cho việc truy cập dữ liệu tập tin này trong định nghĩa nhiệm vụ? – zrisher

+1

'$ stdin.read' hoạt động cho tôi. – dojosto

1

Tôi đã tìm thấy cách tiếp cận thực sự đơn giản để sử dụng GIST cho dữ liệu đầu vào. Bạn sao chép và dán dữ liệu của bạn vào một ý chính và sau đó chuyển liên kết đến gist nguyên như một tham số cho tác vụ cào của bạn. Sau đó, trong nhiệm vụ cào bạn mở tập tin từ xa.

Ví dụ, nếu bạn đang tải một tập tin yaml:

YAML.parse(open(file_name)).to_ruby.with_indifferent_access 
Các vấn đề liên quan