Làm cách nào để sử dụng “get” trong nhiệm vụ cào?


80

Tôi gặp lỗi bất cứ khi nào tôi cố gắng sử dụng hàm được trong một tác vụ rake. Có cách nào để làm cho nó hoạt động?

Lỗi cho biết, "không có tệp hoặc thư mục như vậy - (tên tác vụ cào)"


Thông báo lỗi có vẻ khá tự giải thích ...
Mitch Wheat

6
Nó có vẻ như vậy, nhưng nó không phải. Xem câu trả lời của tôi dưới đây. Có một chút nhầm lẫn về sự khác biệt giữa Kernel # get và STDIN.gets.
James A. Rosen 23/02/09

Câu trả lời:


158

Vấn đề là Kernel#gets(đó là những gì bạn đang gọi nếu bạn chỉ sử dụng getschính nó) giả sử bạn đang lấy từ một tệp được đặt tên bởi các đối số được truyền cho Rake. Điều đó có nghĩa là getscố gắng trả về nội dung của một tệp có tên [rake-task-here], tệp này gần như chắc chắn không tồn tại.

Cố gắng STDIN.gets.


3
Nhỏ nit hái: $stdincó lẽ là thích hợp hơn so với STDINở đây, cũng thấy stackoverflow.com/a/4279689/968531
NobodysNightmare

-4

Tôi không nghĩ rằng bạn nên sử dụng get in a rake task, nếu bạn cần lấy dữ liệu đầu vào từ dòng lệnh, bạn có thể nên chuyển nó vào dưới dạng tham số, nhưng nếu bạn đăng một số mã không hoạt động thì tôi chắc chắn bạn sẽ nhận được một câu trả lời tốt hơn.


21
Nói chung, các đối số dòng lệnh một lựa chọn tốt hơn, nhưng có rất nhiều lý do chính đáng để sử dụng trong tác vụ rake. Hầu hết chúng liên quan đến xác thực hoặc xác minh rằng bạn thực sự muốn làm những gì bạn yêu cầu rake làm. ("triển khai mã sản xuất")
James A. Rosen 23/02/09
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.