2010-03-15 39 views
5

Tôi đang chạy một crontab thực thi tác vụ cào. Tôi nhận được lỗi sau (với MAILTO từ crontab):Crontab + rails3 + bundler

rake aborted! 
no such file to load -- bundler 
/Users/Mendel/Sites/misnooit/Rakefile:4 
(See full trace by running task with --trace)

Tôi đang sử dụng RVM với:
ruby: ruby ​​1.9.1p378
ray: Rails 3.0.0.beta
$ GEM_HOME : /Users/Mendel/.rvm/gems/ruby-1.9.1-p378
bundler: bundler (0.9.11)

lỗi này là khá tự giải thích nhưng tôi không thể sửa chữa nó. Có ai đó có thêm kiến ​​thức về vấn đề này không? Cảm ơn trước.

+0

bạn có chắc chắn rằng người dùng tải cấu hình rvm của mình không? – shingara

+0

Tôi nghĩ rằng tôi, nhưng bạn có thể chỉ cho tôi cách bạn sẽ làm điều đó? Có lẽ tôi đang làm điều gì sai. – user288764

Trả lời

1

Chỉ cần đoán: là Ruby 1.9.1p378 Ruby mặc định của bạn?

Tôi nghĩ rằng nó không phải như vậy bạn chỉ có thể thực hiện rvm --defaults "ruby-1.9.1-p378" Nếu điều này không giúp được, bạn có chắc chắn trình cài đặt đã được cài đặt khi ruby ​​1.9 được sử dụng không?

Ngoài ra, trong môi trường thử nghiệm/sản xuất của bạn, bạn có thể muốn chạy cron với người dùng khác với chính bạn. Vì vậy, tôi đề nghị bạn cài đặt rvm là "root", và thiết lập (vẫn là root) một RVM mặc định sẽ là mặc định cho tất cả người dùng hệ thống. Và tất nhiên, bạn có thể ghi đè điều này cho mỗi người dùng.

1

Tôi đã có kinh nghiệm tốt sử dụng http://github.com/javan/whenever

Nó sử dụng một DSL Ruby để quản lý công việc cron và nó xử lý cài đặt tất cả sự kỳ diệu môi trường.

every 3.hours do 
    runner "MyModel.some_process" 
    rake "my:rake:task" 
end 
1

đã bạn chạy lệnh với --trace khẳng định để đảm bảo không có một cái gì đó rõ ràng trong lệnh cào, nhưng những gì bạn có thể làm là chuỗi crontab lệnh

rvm 1.9.1;rake do_whatever_task 

Bằng cách đó nó sẽ nạp môi trường ruby ​​mỗi lần trước khi chạy cào.

6

Tôi vừa trải nghiệm điều này. Vấn đề đối với tôi là trường hợp của cào và ruby ​​tôi sử dụng được xây dựng tại địa phương, và được cài đặt vào/usr/local/bin. Có các phiên bản khác trong/usr/bin (phải kiểm tra những gì tôi đã cài đặt bằng cách sử dụng apt-get trong quá khứ ..).

Vì vậy, trong file crontab của tôi, tôi thiết lập đường dẫn sử dụng

PATH =/usr/local/bin:/usr/bin:/bin

(Tôi đã nhìn thấy nó như PATH =/usr/bin:/bin trong email crontab không thành công)

và nó hoạt động.

0

Tôi đã gặp vấn đề tương tự vào cuối tuần này, tôi thấy rằng Rake Gem của tôi đã được cập nhật thành 0.90 bạn cần cào 0.8.7. Điều này đã giải quyết được vấn đề cuối cùng của tôi.