标签: devise-async

如何使用Sidekiq测试Devise Async?

提前致谢!Sidekiq工作正常,但我无法用Devise Async测试它,或者我应该说我不能测试后者?

根据Sidekiq的文档,当测试模式设置为fake!时,给予worker的任何作业都会被推送到名为jobs同一个worker 的数组中.因此测试这个数组的增加是微不足道的.

但是,对于Devise Async来说,虽然它的后端包括,但它并不是那么微不足道Sidekiq::Worker.这是我尝试测试的一小部分内容:

  • Devise::Async::Backend::Sidekiq.jobs
  • Devise::Mailer.deliveries
  • ActionMailer::Base.deliveries
  • Devise::Async::Backend::Worker.jobs

这些测试对象都没有指出尺寸的增加.由于Devise将其电子邮件作为模型回调发送,我尝试在模型和控制器规范中进行测试.使用Factory Girl和Database Cleaner,我也尝试了两种模式:事务和截断.毋庸置疑,我也尝试过两种Sidekiq模式:假的!和内联!

我错过了什么?

devise rspec-rails sidekiq ruby-on-rails-4 devise-async

8
推荐指数
1
解决办法
657
查看次数

Rails 4和Devise的积极工作

我正在尝试使用Rails 4和Devise设置Active Job.我愿意接受任何教程,如果有的话(通过我的搜索找不到.)

我知道有一个Devise Async gem,但它不包括Active Job.也就是说,我发现这个宝石在开发中很新鲜,但我收到了一个uninitialized constant Devise::Async::Backend::Base (NameError)错误.(可能是我在实施它时很轻松).

欢迎任何建议.我希望我不必创建新的控制器方法.

ruby-on-rails devise ruby-on-rails-4 devise-async rails-activejob

7
推荐指数
1
解决办法
2251
查看次数

Sidekiq 5无法使用AWS ELB和rails 5 api

Ruby版本:2.3.1

Sidekiq/Pro/Enterprise版本:5.0

Rails:5.0.2

我已经按照本教程进行操作,因此我可以使用sidekiq在我的rails api应用程序中发送电子邮件.该应用程序使用Puma在AWS ElasticBeanstalk上发布.

当用户注册时,他们应该收到一封电子邮件(通过设计).没有显示错误,没有生成sidekiq.log的日志.我不知道发生了什么,电子邮件根本没有发送.

初始化/ devise_async.rb

Devise::Async.setup do |config|
  config.enabled = true
  config.backend = :sidekiq
  config.queue   = :default
end
Run Code Online (Sandbox Code Playgroud)

初始化/ sidekiq.rb

rails_root = Rails.root || File.dirname(__FILE__) + '/../..'
rails_env = Rails.env || 'development'
redis_config = YAML.load_file(rails_root.to_s + '/config/redis.yml')
redis_config.merge! redis_config.fetch(Rails.env, {})
redis_config.symbolize_keys!
Sidekiq.configure_server do |config|
  config.redis = { url: "redis://#{redis_config[:host]}:#{redis_config[:port]}/12" }
end
Sidekiq.configure_client do |config|
  config.redis = { url: "redis://#{redis_config[:host]}:#{redis_config[:port]}/12" }
end
Run Code Online (Sandbox Code Playgroud)

配置/ redis.yml

development:
 host: 'localhost'
 port: '6379'
test:
 host: 'localhost'
 port: '6379'
production: …
Run Code Online (Sandbox Code Playgroud)

redis sidekiq devise-async amazon-elastic-beanstalk ruby-on-rails-5

5
推荐指数
0
解决办法
394
查看次数

Sidekiq + Devise Mailer有多个子域名

我在我的一个项目中在运行时更改ActionMailer :: Base.default_url_options = {:host => host}时遇到问题.

设置:我有多个子域,它们在后端使用相同的Rails-Application.我想通过Sidekiq队列将我的Devise邮件发送给用户.设计邮件(确认,重置密码)包含链接,这些链接需要特定的子域才是正确的.

我的环境

rails (4.2.0)
sidekiq (3.3.1)
devise (3.4.1)
devise-async (0.9.0)
Run Code Online (Sandbox Code Playgroud)

我的application_controller中有一个before_action

class ApplicationController < ActionController::Base

  before_action :set_action_mailer_default_url_options

  private

  def set_action_mailer_default_url_options
    host = "my-logic-to-get-the-correct-host"
    ActionMailer::Base.default_url_options = {:host => host}
  end

end
Run Code Online (Sandbox Code Playgroud)

现在,如果我想重置密码,我总是会得到我在环境文件中指定的默认网址选项.如果我从我的环境中删除default_url_options,我会在sidekiq日志中获得默认的Devise错误.

ActionView::Template::Error: Missing host to link to! Please provide the :host parameter, set default_url_options[:host], or set :only_path to true
Run Code Online (Sandbox Code Playgroud)

主机始终在控制器中正确设置.我已经调试过了.似乎主机没有传递给sidekiq ..任何想法如何解决这个问题?

我无法在某个地方保存子域名,因为用户可以触发来自不同子域的电子邮件,但并不总是相同.我需要一种方法告诉Devise应该使用哪个主机发送特定的电子邮件.我可以覆盖Devise邮件程序并传递主机或类似的东西吗?

在我的情况下,以下解决方案是不可能的: 使用sidekiq时Rails动作邮件程序中的动态域名

顺便说一句:完整的工作流程,包括设计,设计 - 异步和sidekiq本身(在开发,分期和生产中).只有链接的主机不正确 - >这是我的大问题:-) ..

devise sidekiq ruby-on-rails-4 devise-async

5
推荐指数
1
解决办法
828
查看次数

使用devise-async发送电子邮件不起作用(Rails/Sidekiq)

我有sidekiq (2.15.2),devise (3.2.0)devise-async (0.9.0)在我的Rails应用程序.

我正试图devise-async接管发送电子邮件.但没有运气.我按照这样的说明:

添加:asyncUser模型:

# models/user.rb
class User
  include Mongoid::Document
  devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable, :confirmable, :async
end
Run Code Online (Sandbox Code Playgroud)

创建初始化程序:

# config/initializers/devise_async.rb
Devise::Async.backend = :sidekiq
Run Code Online (Sandbox Code Playgroud)

我没有在邮件中进行任何自定义修改

# config/initializers/devise_async.rb
Devise.setup do |config|
  config.mailer_sender = "my@email.com"
  # config.mailer = "Devise::Mailer"
end
Run Code Online (Sandbox Code Playgroud)

以下是创建新帐户时在控制台中显示的内容:

Started POST "/da/users" for 127.0.0.1 at 2014-05-29 14:42:07 +0200
Processing by RegistrationsController#create as HTML
  Parameters: {"utf8"=>"?", "authenticity_token"=>"wyIIRqVoYrXqbX/U+3PGyrYI/MIxcH1YErUQ7JWcfUs=", "user"=>{"company"=>"Some Company Ltd.", "email"=>"some@email.com", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}, …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails redis devise sidekiq devise-async

1
推荐指数
1
解决办法
993
查看次数