2015-03-01 15 views
13

Tôi có một ứng dụng đường ray trong đó tôi có một phương thức mà tôi gửi rất nhiều email. Tôi muốn thực hiện hành động này asynchronously. Để làm điều đó tôi đã cố gắng sử dụng Sidekiq, nhưng tôi không thể làm cho nó hoạt động đúng - nó không gửi bất kỳ email nào.Rails 4.2 - Sidekiq không gửi email phát triển

Gửi email đã hoạt động trước đây, vì vậy tôi chắc chắn rằng cài đặt email của tôi được đặt chính xác.

Trong gemfile của tôi, tôi có điều này:

gem 'sidekiq' 

Và tôi đã chạy bundle install. Tôi cũng đã cài đặt redis, theo các hướng dẫn trên RailsCasts #366.

Tôi đã bắt đầu sidekiq với lệnh sau đây: bundle exec sidekiq, điều này dẫn đến những gì có thể được nhìn thấy trong hình dưới đây:

enter image description here

Trong application.rb Tôi đã điều sau đây:

config.active_job.queue_adapter = :sidekiq 

Và tôi cố gắng gửi các email như thế này:

Mailer.deliver_new_competition_notification(member.user, @competition).deliver_later! 

Tôi không gặp bất kỳ lỗi nào, nhưng email không bao giờ được gửi.

Vì vậy, tôi đã bỏ lỡ điều gì đó?

+0

Bạn đã bao gồm một tập tin proc? – sansarp

+0

@sansarp Không, tôi không có. Câu trả lời của Anthony dưới đây là đủ để làm cho nó hoạt động. Nhưng tôi tò mò về Procfiles, bạn có thể giải thích về cách tôi có thể bao gồm Procfile quảng cáo, nó nên chứa gì và tại sao? – Anders

Trả lời

34

Bạn cần phải bootup sidekiq với hàng đợi bưu phẩm cho nó để nhận những việc làm:

bundle exec sidekiq -q default -q mailers 

Các Sidekiq Wiki đi qua các kịch bản trong detail here.

+0

Cảm ơn bạn đã làm việc! – Anders

3

Ngoài ra bạn có thể thay đổi config/sidekiq.yml:

--- 
:concurrency: 25 
:pidfile: ./tmp/pids/sidekiq.pid 
:logfile: ./log/sidekiq.log 
:queues: 
    - default 
    - mailers 

Và chạy sidekiq -C config/sidekiq.yml

+0

chạy sidekiq -C config/sidekiq.yml đã giúp tôi - cảm ơn! – cdimitroulas

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