2016年4月28日星期四

Rails app redmine 出现“Incomplete response received from application” 问题

搭建好的Redmine服务器,才运转两天就出问题,project里new issue的时候蹦出“Incomplete response received from application”的错误网页。真是费脑子啊。

万能的stackflow告诉我这是rails常见的错误,核心问题是secret token没配置好。这是rails应用经常出现的问题,故本文对rails应用有普适性。

缺少了production所必须的secret token, 那就生成好了。在这里,先说下它是干嘛的,

This step generates a random key used by Rails to encode cookies storing session data thus preventing their tampering.
Generating a new secret token invalidates all existing sessions after restart.

得当当前应用会话(标签页)重启/关闭的,secret token是用来解析cookies来防止随便访问和随便篡改的,验证通过,我才能对服务器里的数据修改(增减,在这里对应的是project/issue的新建)

说说解决方案,

1. 服务器上定位到我们的rails应用redmine文件夹,rake secret生成密钥

2. redmine/config 文件夹下新建secret.yml,格式如下,

development:
  secret_key_base:
 
test:
  secret_key_base:
 
production:
  secret_key_base: **********************************


在production的secret_key_base下补充上我们的密钥。这里暂时忽略development和test,我们是应用,不是二次开发,哈哈

这里的复制粘贴不是那么友好,我们也可以这样来省事儿,

development:
  secret_key_base:
 
test:
  secret_key_base:
 
production:
  secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>

保存退出,重启服务,我这么懒直接重启的服务器。

bug不见啦。

References,
1. http://stackoverflow.com/questions/29241053/incomplete-response-received-from-application-from-nginx-passenger
2. http://guides.rubyonrails.org/upgrading_ruby_on_rails.html#config-secrets-yml

没有评论:

发表评论