Skip to content

Instantly share code, notes, and snippets.

@maxivak
Last active June 5, 2025 15:20

Revisions

  1. maxivak revised this gist Dec 1, 2015. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion 00.md
    Original file line number Diff line number Diff line change
    @@ -140,7 +140,7 @@ To change queue name for ActionMailer use this config:
    config.active_job.queue_name_delimiter = "_"
    ```

    This will use queues named `:mysite_development_mailers`, etc.
    This will use queues named `:mysite_mailers`, etc.

    !!! important. You may need to include new queue names in sidekiq.yml file:
    ```
  2. maxivak revised this gist Dec 1, 2015. 1 changed file with 3 additions and 3 deletions.
    6 changes: 3 additions & 3 deletions 00.md
    Original file line number Diff line number Diff line change
    @@ -136,7 +136,7 @@ To change queue name for ActionMailer use this config:
    config.active_job.queue_adapter = :sidekiq
    config.active_job.queue_name_prefix = "mysite_#{Rails.env}"
    config.active_job.queue_name_prefix = "mysite"
    config.active_job.queue_name_delimiter = "_"
    ```

    @@ -152,8 +152,8 @@ This will use queues named `:mysite_development_mailers`, etc.
    - default
    - mailers
    - mysite_development_default
    - mysite_development_mailers
    - mysite_default
    - mysite_mailers
    ```

  3. maxivak revised this gist Dec 1, 2015. 1 changed file with 36 additions and 2 deletions.
    38 changes: 36 additions & 2 deletions 00.md
    Original file line number Diff line number Diff line change
    @@ -126,6 +126,42 @@ end
    ```

    ## Sidekiq and ActionMailer (ActionJob)

    By default, jobs to deliver emails will be placed in queue named :mailers.
    To change queue name for ActionMailer use this config:

    ```
    # config/environments/development.rb
    config.active_job.queue_adapter = :sidekiq
    config.active_job.queue_name_prefix = "mysite_#{Rails.env}"
    config.active_job.queue_name_delimiter = "_"
    ```

    This will use queues named `:mysite_development_mailers`, etc.

    !!! important. You may need to include new queue names in sidekiq.yml file:
    ```
    # config/sidekiq.yml
    ---
    :concurrency: 1
    :queues:
    - default
    - mailers
    - mysite_development_default
    - mysite_development_mailers
    ```

    ## Sidekiq and Devise
    Read this: https://github.com/mperham/sidekiq/wiki/Devise



    ## Run Sidekiq

    ```
    @@ -137,8 +173,6 @@ bundle exec sidekiq --environment development -C config/sidekiq.yml
    Use god for monitoring and running sidekiq automatically: https://gist.github.com/maxivak/05847dc7f558d5ef282e


    ## Sidekiq and Devise
    Read this: https://github.com/mperham/sidekiq/wiki/Devise


    ## RSpec tests
  4. maxivak revised this gist Nov 11, 2015. 1 changed file with 3 additions and 3 deletions.
    6 changes: 3 additions & 3 deletions 00.md
    Original file line number Diff line number Diff line change
    @@ -112,16 +112,16 @@ config/sidekiq.yml:
    ```

    Specify queue name for different environments:
    Specify Redis namespace for different environments:
    ```
    # config/initializers/sidekiq.rb
    Sidekiq.configure_server do |config|
    config.redis = { url: 'redis://localhost:6379/0', namespace: "mysite_sidekiq_#{Rails.env}" }
    config.redis = { url: 'redis://localhost:6379/0', namespace: "app3_sidekiq_#{Rails.env}" }
    end
    Sidekiq.configure_client do |config|
    config.redis = { url: 'redis://localhost:6379/0', namespace: "mysite_sidekiq_#{Rails.env}" }
    config.redis = { url: 'redis://localhost:6379/0', namespace: "app3_sidekiq_#{Rails.env}" }
    end
    ```
  5. maxivak revised this gist Nov 11, 2015. 1 changed file with 30 additions and 11 deletions.
    41 changes: 30 additions & 11 deletions 00.md
    Original file line number Diff line number Diff line change
    @@ -61,15 +61,21 @@ Redis provides data storage for Sidekiq. It holds all the job data along with ru
    ### Configure Sidekiq


    To make work mailer.deliver_later we need to tell ActiveJob to use Sidekiq:
    To make `#deliver_later` work we need to tell ActiveJob to use Sidekiq.
    As long as Active Job is setup to use Sidekiq we can use #deliver_later.

    ```
    # config/initializers/active_job.rb
    ActiveJob::Base.queue_adapter = :sidekiq
    config.active_job.queue_adapter = :sidekiq
    ```

    As long as Active Job is setup to use Sidekiq we can use #deliver_later:



    Environment file:

    ```
    # config/environments/development.rb
    @@ -134,7 +140,13 @@ Use god for monitoring and running sidekiq automatically: https://gist.github.co
    ## Sidekiq and Devise
    Read this: https://github.com/mperham/sidekiq/wiki/Devise

    ## RSpec tests for ActionMailer

    ## RSpec tests

    ### RSpec tests for ActionMailer

    In these tests we do not use Sidekiq.


    test environment:
    ```
    @@ -143,7 +155,7 @@ test environment:
    Rails.application.configure do
    ...
    #config.active_job.queue_adapter = :test
    config.active_job.queue_adapter = :test
    config.action_mailer.perform_deliveries = true
    config.action_mailer.delivery_method = :test
    @@ -179,6 +191,13 @@ test environment:
    Rails.application.configure do
    ...
    config.active_job.queue_adapter = :sidekiq
    config.action_mailer.perform_deliveries = true
    config.action_mailer.delivery_method = :test
    config.action_mailer.raise_delivery_errors = true
    ```

    @@ -198,12 +217,12 @@ Test that email was enqueued:
    RSpec.describe "Test sending email with sidekiq", :type => :request do
    it 'send email to sidekiq' do
    user = User.first
    expect{
    user = User.first
    mail = UsersMailer.welcome_email(user.id)
    mail.deliver_later
    }.to change( Sidekiq::Worker.jobs, :size).by(1)
    UsersMailer.welcome_email(user.id).deliver_later
    }.to change( Sidekiq::Worker.jobs, :size ).by(1)
    end
  6. maxivak revised this gist Nov 11, 2015. 1 changed file with 18 additions and 1 deletion.
    19 changes: 18 additions & 1 deletion 00.md
    Original file line number Diff line number Diff line change
    @@ -134,7 +134,24 @@ Use god for monitoring and running sidekiq automatically: https://gist.github.co
    ## Sidekiq and Devise
    Read this: https://github.com/mperham/sidekiq/wiki/Devise

    ## RSpec tests
    ## RSpec tests for ActionMailer

    test environment:
    ```
    # config/environments/test.rb
    Rails.application.configure do
    ...
    #config.active_job.queue_adapter = :test
    config.action_mailer.perform_deliveries = true
    config.action_mailer.delivery_method = :test
    config.action_mailer.raise_delivery_errors = true
    ```

    Test that deliver_later method was called:
    ```
  7. maxivak revised this gist Nov 11, 2015. 1 changed file with 20 additions and 1 deletion.
    21 changes: 20 additions & 1 deletion 00.md
    Original file line number Diff line number Diff line change
    @@ -134,8 +134,27 @@ Use god for monitoring and running sidekiq automatically: https://gist.github.co
    ## Sidekiq and Devise
    Read this: https://github.com/mperham/sidekiq/wiki/Devise

    ## RSpec tests

    ## RSpec tests for Sidekiq
    Test that deliver_later method was called:
    ```
    user = User.first
    #
    message_delivery = instance_double(ActionMailer::MessageDelivery)
    expect(UsersMailer).to receive(:welcome_email).with(user.id).and_return(message_delivery)
    expect(message_delivery).to receive(:deliver_later)
    #
    mail = UsersMailer.welcome_email(user.email)
    mail.deliver_later
    ```


    ### RSpec tests for Sidekiq

    test environment:
    ```
  8. maxivak revised this gist Nov 11, 2015. 1 changed file with 6 additions and 1 deletion.
    7 changes: 6 additions & 1 deletion 00.md
    Original file line number Diff line number Diff line change
    @@ -27,7 +27,12 @@ end
    ```

    Views for email: app/views/users_mailer/welcome_email.html.erb and app/views/users_mailer/welcome_email.text.erb
    Views for email:
    ```
    app/views/users_mailer/welcome_email.html.erb - HTML version
    app/views/users_mailer/welcome_email.text.erb - TEXT version
    ```


    Send email:
    ```
  9. maxivak revised this gist Nov 11, 2015. 1 changed file with 1 addition and 0 deletions.
    1 change: 1 addition & 0 deletions 00.md
    Original file line number Diff line number Diff line change
    @@ -27,6 +27,7 @@ end
    ```

    Views for email: app/views/users_mailer/welcome_email.html.erb and app/views/users_mailer/welcome_email.text.erb

    Send email:
    ```
  10. maxivak revised this gist Nov 11, 2015. 1 changed file with 26 additions and 1 deletion.
    27 changes: 26 additions & 1 deletion 00.md
    Original file line number Diff line number Diff line change
    @@ -65,7 +65,23 @@ ActiveJob::Base.queue_adapter = :sidekiq

    As long as Active Job is setup to use Sidekiq we can use #deliver_later:
    ```
    UsersMailer.welcome_email(user_id).deliver_later
    # config/environments/development.rb
    Rails.application.configure do
    ...
    config.active_job.queue_adapter = :sidekiq
    config.action_mailer.perform_deliveries = true
    config.action_mailer.raise_delivery_errors = true
    config.action_mailer.delivery_method = :smtp
    config.action_mailer.smtp_settings = { ... }
    end
    ```

    Read more about ActionJob and Sidekiq: https://github.com/mperham/sidekiq/wiki/Active-Job
    @@ -115,6 +131,15 @@ Read this: https://github.com/mperham/sidekiq/wiki/Devise

    ## RSpec tests for Sidekiq

    test environment:
    ```
    # config/environments/test.rb
    Rails.application.configure do
    ...
    ```

    spec/rails_helper.rb:
    ```
    # sidekiq
  11. maxivak revised this gist Nov 11, 2015. 1 changed file with 26 additions and 0 deletions.
    26 changes: 26 additions & 0 deletions 00.md
    Original file line number Diff line number Diff line change
    @@ -115,5 +115,31 @@ Read this: https://github.com/mperham/sidekiq/wiki/Devise

    ## RSpec tests for Sidekiq

    spec/rails_helper.rb:
    ```
    # sidekiq
    require 'sidekiq/testing'
    Sidekiq::Testing.fake! # by default it is fake
    ```

    User Sidekiq::Worker.jobs.size to see the number of jobs in the queue.


    Test that email was enqueued:
    ```
    RSpec.describe "Test sending email with sidekiq", :type => :request do
    it 'send email to sidekiq' do
    expect{
    user = User.first
    mail = UsersMailer.welcome_email(user.id)
    mail.deliver_later
    }.to change( Sidekiq::Worker.jobs, :size).by(1)
    end
    end
    ```
  12. maxivak revised this gist Nov 11, 2015. 1 changed file with 23 additions and 0 deletions.
    23 changes: 23 additions & 0 deletions 00.md
    Original file line number Diff line number Diff line change
    @@ -63,10 +63,27 @@ ActiveJob::Base.queue_adapter = :sidekiq
    ```

    As long as Active Job is setup to use Sidekiq we can use #deliver_later:
    ```
    UsersMailer.welcome_email(user_id).deliver_later
    ```

    Read more about ActionJob and Sidekiq: https://github.com/mperham/sidekiq/wiki/Active-Job

    ## Configure Sidekiq


    config/sidekiq.yml:

    ```
    ---
    :concurrency: 1
    :queues:
    - default
    - mailers
    ```

    Specify queue name for different environments:
    ```
    # config/initializers/sidekiq.rb
    @@ -94,3 +111,9 @@ Use god for monitoring and running sidekiq automatically: https://gist.github.co

    ## Sidekiq and Devise
    Read this: https://github.com/mperham/sidekiq/wiki/Devise


    ## RSpec tests for Sidekiq



  13. maxivak revised this gist Nov 11, 2015. 1 changed file with 21 additions and 0 deletions.
    21 changes: 21 additions & 0 deletions 00.md
    Original file line number Diff line number Diff line change
    @@ -55,10 +55,31 @@ Redis provides data storage for Sidekiq. It holds all the job data along with ru
    ### Configure Sidekiq


    To make work mailer.deliver_later we need to tell ActiveJob to use Sidekiq:
    ```
    # config/initializers/active_job.rb
    ActiveJob::Base.queue_adapter = :sidekiq
    ```

    Read more about ActionJob and Sidekiq: https://github.com/mperham/sidekiq/wiki/Active-Job

    ## Configure Sidekiq

    Specify queue name for different environments:
    ```
    # config/initializers/sidekiq.rb
    Sidekiq.configure_server do |config|
    config.redis = { url: 'redis://localhost:6379/0', namespace: "mysite_sidekiq_#{Rails.env}" }
    end
    Sidekiq.configure_client do |config|
    config.redis = { url: 'redis://localhost:6379/0', namespace: "mysite_sidekiq_#{Rails.env}" }
    end
    ```

    ## Run Sidekiq

  14. maxivak revised this gist Nov 11, 2015. 1 changed file with 15 additions and 0 deletions.
    15 changes: 15 additions & 0 deletions 00.md
    Original file line number Diff line number Diff line change
    @@ -47,6 +47,17 @@ Gemfile:
    gem 'sidekiq'
    ```

    ### Install Redis

    Redis provides data storage for Sidekiq. It holds all the job data along with runtime and historical data


    ### Configure Sidekiq







    ## Run Sidekiq
    @@ -58,3 +69,7 @@ bundle exec sidekiq --environment development -C config/sidekiq.yml
    ### God + Sidekiq

    Use god for monitoring and running sidekiq automatically: https://gist.github.com/maxivak/05847dc7f558d5ef282e


    ## Sidekiq and Devise
    Read this: https://github.com/mperham/sidekiq/wiki/Devise
  15. maxivak revised this gist Nov 11, 2015. No changes.
  16. maxivak revised this gist Nov 11, 2015. 1 changed file with 43 additions and 1 deletion.
    44 changes: 43 additions & 1 deletion 00.md
    Original file line number Diff line number Diff line change
    @@ -3,8 +3,50 @@
    Send email asynchroniously using Sidekiq.



    ## ActionMailer

    Create your mailer us usual:

    ```
    # app/mailers/users_mailer.rb
    class UsersMailer < ActionMailer::Base
    def welcome_email(user_id)
    @user = User.find(user_id)
    mail( :to => @user.email,
    :subject => "Welcome"
    ) do |format|
    format.text
    format.html
    end
    end
    end
    ```


    Send email:
    ```
    user = User.find(1)
    mail = UsersMailer.welcome_email(user.id)
    #mail.deliver_now
    mail.deliver_later
    ```


    ## Sidekiq

    Gemfile:
    ```
    gem 'sidekiq'
    ```



    ## Run Sidekiq
    @@ -15,4 +57,4 @@ bundle exec sidekiq --environment development -C config/sidekiq.yml

    ### God + Sidekiq

    Use god for monitoring and running sidekiq automatically: https://gist.github.com/maxivak/05847dc7f558d5ef282e
    Use god for monitoring and running sidekiq automatically: https://gist.github.com/maxivak/05847dc7f558d5ef282e
  17. maxivak created this gist Nov 11, 2015.
    18 changes: 18 additions & 0 deletions 00.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,18 @@
    # Sending emails with ActionMailer and Sidekiq

    Send email asynchroniously using Sidekiq.


    ## Sidekiq



    ## Run Sidekiq

    ```
    bundle exec sidekiq --environment development -C config/sidekiq.yml
    ```

    ### God + Sidekiq

    Use god for monitoring and running sidekiq automatically: https://gist.github.com/maxivak/05847dc7f558d5ef282e