2010-10-06 27 views
5

Tôi đang viết một ứng dụng Sinatra nhỏ và tôi muốn lưu trữ nó trên Heroku vì mục đích đơn giản. Nhưng, những gì tôi có là một nhiệm vụ mà mẩu tin lưu niệm một số trang web và thêm một số dữ liệu vào cơ sở dữ liệu của tôi mỗi giờ. Hiện tại, điều này chỉ được viết dưới dạng tập lệnh ruby ​​cần được thực hiện. Những gì Heroku có là rake based cron job. Bây giờ nếu đây là một ứng dụng đường ray, tôi có thể dễ dàng làm điều này, nhưng tôi muốn tránh sự lộn xộn cho một cái gì đó đơn giản như thế này.Cách chạy một công việc định kỳ trong Heroku, với ứng dụng Sinatra

Có cách nào để tránh điều này không? Hoặc tôi có phải cài đặt rake cũng như với ứng dụng của tôi không?

Cảm ơn bạn.

Eric

Trả lời

10

Bạn cần một Rakefile như:

desc "This task is called by the Heroku cron add-on" 
task :cron do 
# Do something 
end 

Heroku định kỳ thực hiện cào cron trong ứng dụng của bạn tùy thuộc vào việc bạn đã chọn "cron add-on" là hàng giờ hoặc hàng ngày.

1

Nhìn lại và có vẻ như tôi đã nhảy súng lên câu hỏi.

Đối với các ứng dụng không phải là Rails, chỉ cần tạo Rakefile và đặt nhiệm vụ ở đó.

Hy vọng điều này sẽ giúp người khác.

Chúc mừng!

3

Bạn cần xem Rufus. Rufus là bạn của bạn. Rufus sẽ là crontab của bạn trong khi ứng dụng của bạn được tải.

Tôi không thử công cụ này trên Heroku nhưng, hãy thử và trả lời chúng tôi.

http://codex.heroku.com/past/2010/4/15/rufus_scheduler_for_my_tiny_sinatra_apps/

Tại sao Rufus được làm mát? Vâng kiểm tra này ra, nó sạch sẽ :)

$ sudo gem install rufus-scheduler 

require 'rubygems' 
require 'rufus/scheduler' 

scheduler = Rufus::Scheduler.start_new 

scheduler.cron '00 23 30 * *' do 
    # Run every 30 days at 23h00m 
    # ...your magic code goes here... 
end 
+1

Có vẻ tốt. Thật không may Heroku không hỗ trợ đá quý Rufus. –

+1

autch! Có thể http://github.com/javan/khi nào có thể họ không hỗ trợ bất kỳ điều gì sau đó về tiện ích "cron" được trả tiền của họ: / – include

Các vấn đề liên quan