我们在生产环境中的Webrick服务器上有一个Rails 4应用程序,该应用程序会定期崩溃并返回500错误。崩溃似乎来自以下错误:
Error during failsafe response: undefined method `authenticate' for nil:NilClass
/usr/local/rvm/gems/ruby-2.1.2/gems/devise-3.2.2/lib/devise/controllers/helpers.rb:58:in `current_user'
Run Code Online (Sandbox Code Playgroud)
我们已经在第58行检查了helpers.rb文件,因此它来自在'current_user'方法中对wardent.authenticate的调用。因此,我们已在Gemfile中导入了宝石“ warden”,但没有任何变化。
我们还尝试将webrick服务器更改为“ puma”服务器,认为它可能来自线程,但没有任何变化。
整个错误如下:
Error during failsafe response: undefined method `authenticate' for nil:NilClass
/usr/local/rvm/gems/ruby-2.1.2/gems/devise-3.2.2/lib/devise/controllers/helpers.rb:58:in `current_user'
/usr/local/rvm/gems/ruby-2.1.2/gems/actionpack-4.0.11/lib/abstract_controller/helpers.rb:53:in `current_user'
/home/dev/myProject/app/views/shared/_top_menu.html.erb:23:in `_app_views_shared__top_menu_html_erb___3475115451092967008_67265400'
/usr/local/rvm/gems/ruby-2.1.2/gems/actionpack-4.0.11/lib/action_view/template.rb:143:in `block in render'
/usr/local/rvm/gems/ruby-2.1.2/gems/activesupport-4.0.11/lib/active_support/notifications.rb:161:in `instrument'
/usr/local/rvm/gems/ruby-2.1.2/gems/actionpack-4.0.11/lib/action_view/template.rb:141:in `render'
/usr/local/rvm/gems/ruby-2.1.2/gems/actionpack-4.0.11/lib/action_view/renderer/partial_renderer.rb:306:in `render_partial'
/usr/local/rvm/gems/ruby-2.1.2/gems/actionpack-4.0.11/lib/action_view/renderer/partial_renderer.rb:279:in `block in render'
/usr/local/rvm/gems/ruby-2.1.2/gems/actionpack-4.0.11/lib/action_view/renderer/abstract_renderer.rb:38:in `block in instrument'
/usr/local/rvm/gems/ruby-2.1.2/gems/activesupport-4.0.11/lib/active_support/notifications.rb:159:in `block in instrument'
/usr/local/rvm/gems/ruby-2.1.2/gems/activesupport-4.0.11/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
/usr/local/rvm/gems/ruby-2.1.2/gems/activesupport-4.0.11/lib/active_support/notifications.rb:159:in `instrument'
/usr/local/rvm/gems/ruby-2.1.2/gems/actionpack-4.0.11/lib/action_view/renderer/abstract_renderer.rb:38:in `instrument'
/usr/local/rvm/gems/ruby-2.1.2/gems/actionpack-4.0.11/lib/action_view/renderer/partial_renderer.rb:278:in `render'
/usr/local/rvm/gems/ruby-2.1.2/gems/actionpack-4.0.11/lib/action_view/renderer/renderer.rb:47:in `render_partial'
/usr/local/rvm/gems/ruby-2.1.2/gems/actionpack-4.0.11/lib/action_view/helpers/rendering_helper.rb:27:in `render'
/home/dev/myProject/app/views/layouts/application.html.erb:18:in `_app_views_layouts_application_html_erb__2013404122424653986_65265180'
/usr/local/rvm/gems/ruby-2.1.2/gems/actionpack-4.0.11/lib/action_view/template.rb:143:in `block in render'
/usr/local/rvm/gems/ruby-2.1.2/gems/activesupport-4.0.11/lib/active_support/notifications.rb:161:in `instrument'
/usr/local/rvm/gems/ruby-2.1.2/gems/actionpack-4.0.11/lib/action_view/template.rb:141:in `render'
/usr/local/rvm/gems/ruby-2.1.2/gems/actionpack-4.0.11/lib/action_view/renderer/template_renderer.rb:61:in `render_with_layout'
/usr/local/rvm/gems/ruby-2.1.2/gems/actionpack-4.0.11/lib/action_view/renderer/template_renderer.rb:47:in …Run Code Online (Sandbox Code Playgroud) 我们有一个用于带有Apache,Phusion Passenger和Capistrano 3的Rails 4应用程序的生产环境,以及一个远程bitbucket存储库.Capistrano的"上限生产部署"效果很好,并且可以正常执行.但是当我们转到远程服务器上的"current"文件夹并执行"git log"命令时,我们的远程存储库的最后一次提交都没有加载.
我们在我们的应用程序的主文件夹中尝试了"git log",同样的问题.
我们的问题是,我们可以将我们的repo的最后提交加载到生产环境中?卡皮斯特拉诺不是默认做的吗?
知道它可能来自哪里?
以下是我们的Capfile,deploy.rb和deploy/production.rb文件的代码:
Capfile
# Load DSL and Setup Up Stages
require 'capistrano/setup'
# Includes default deployment tasks
require 'capistrano/deploy'
require 'rvm1/capistrano3'
require 'capistrano/bundler'
require 'capistrano/rails/assets'
require 'capistrano/rails/migrations'
# Loads custom tasks from `lib/capistrano/tasks' if you have any defined.
Dir.glob('lib/capistrano/tasks/*.cap').each { |r| import r }
Dir.glob('lib/capistrano/**/*.rb').each { |r| import r }
Run Code Online (Sandbox Code Playgroud)
deploy.rb
lock '3.1.0'
set :application, 'XXXXXXX'
set :deploy_user, 'XXXXXXX'
set :repo_url, 'GIT_REPO_URL.XXXXXXX.git'
set :keep_releases, 5
set :rvm_type, :user
set :rvm_ruby_version, 'ruby-2.1.2'
set …Run Code Online (Sandbox Code Playgroud)