Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 调试redis、rails和sidekiq_Ruby On Rails_Redis_Sidekiq - Fatal编程技术网

Ruby on rails 调试redis、rails和sidekiq

Ruby on rails 调试redis、rails和sidekiq,ruby-on-rails,redis,sidekiq,Ruby On Rails,Redis,Sidekiq,我正在尝试向某些用户异步发送电子邮件: 以下是昨天非常有效的方法链: DiscussionMailer.delay.new_reply_notification() 在控制台中运行这个似乎工作得很好,因为它返回了工作者id。我可能错了,这就是键的实际含义,但正如您所看到的,从rails的角度来看,一切都在工作 2.0.0p247 :004 > DiscussionMailer.delay.new_reply_notification(User.last, Reply.last, Disc

我正在尝试向某些用户异步发送电子邮件:

以下是昨天非常有效的方法链:

DiscussionMailer.delay.new_reply_notification()
在控制台中运行这个似乎工作得很好,因为它返回了工作者id。我可能错了,这就是键的实际含义,但正如您所看到的,从rails的角度来看,一切都在工作

2.0.0p247 :004 > DiscussionMailer.delay.new_reply_notification(User.last, Reply.last, Discussion.last, Forum.last )
  User Load (0.6ms)  SELECT "users".* FROM "users" ORDER BY "users"."id" DESC LIMIT 1
  Reply Load (0.2ms)  SELECT "replies".* FROM "replies" ORDER BY "replies"."id" DESC LIMIT 1
  Discussion Load (0.2ms)  SELECT "discussions".* FROM "discussions" ORDER BY "discussions"."id" DESC LIMIT 1
  Forum Load (0.2ms)  SELECT "forums".* FROM "forums" ORDER BY "forums"."id" DESC LIMIT 1
2014-05-04T00:54:45Z 48591 TID-5s8e0 INFO: Sidekiq client with redis options {}
 => "3c35e763a23304e3f7e39e1e" 
然而,事实并非如此。从经验和railgun日志来看,电子邮件离railgun不远。这似乎是因为redis没有做任何事情:

               _._                                                  
           _.-``__ ''-._                                             
      _.-``    `.  `_.  ''-._           Redis 2.6.13 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._                                   
 (    '      ,       .-`  | `,    )     Running in stand alone mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
 |    `-._   `._    /     _.-'    |     PID: 48750
  `-._    `-._  `-./  _.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |           http://redis.io        
  `-._    `-._`-.__.-'_.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |                                  
  `-._    `-._`-.__.-'_.-'    _.-'                                   
      `-._    `-.__.-'    _.-'                                       
          `-._        _.-'                                           
              `-.__.-'                                               

[48750] 04 May 02:02:48.687 # Server started, Redis version 2.6.13
[48750] 04 May 02:02:48.687 * DB loaded from disk: 0.001 seconds
[48750] 04 May 02:02:48.687 * The server is now ready to accept connections on port 6379
我应该得到一些反馈,对吗

我关闭redis服务器并尝试相同的操作,得到:

    Redis::CannotConnectError: Error connecting to Redis on 127.0.0.1:6379 (ECONNREFUSED)

这很好,因为它表明redis和sidekiq可以通信,但不好,因为发生了什么事?我应该如何调试这个问题?轨道炮日志和轨道日志都是无用的我在哪里可以找到redis日志?或者这没有帮助,因为工人们(或者不管他们是什么人,只是在几个小时前才了解redis)甚至还没有“接触”redis?

看起来你还没有启动/重新启动sidekiq。做吧,它会起作用的

错误消息:

Redis::CannotConnectError: Error connecting to Redis on 127.0.0.1:6379 (ECONNREFUSED)
如果Redis和Sidekiq没有通信,则应用程序的Redis gem似乎无法与应用程序本地主机6379端口上的Redis服务器通信

您需要启动Redis服务器,当它启动并运行时,启动Sidekiq服务器。启动每个的过程取决于每个的配置

至于日志,当您启动每个服务器时,您将希望将其输出导出到日志文件。因此,您应该在计算机上的某个位置创建一个空日志文件,然后在启动服务器时修改命令:

 redis-server > /path/to/your/redis.log 2>&1