为什么我在生产中遇到“未定义的方法’paginate’”错误?

在生产服务器上使用will_paginate时出现此错误:

I, [2013-10-24T20:17:40.386696 #18564] INFO -- : Started GET "/meals" for 190.273.432.55 at 2013-10-24 20:17:40 +0000 I, [2013-10-24T20:17:40.388972 #18564] INFO -- : Processing by MealsController#index as HTML I, [2013-10-24T20:17:40.395022 #18564] INFO -- : Completed 500 Internal Server Error in 6ms F, [2013-10-24T20:17:40.396720 #18564] FATAL -- : NoMethodError (undefined method `paginate' for #): app/controllers/meals_controller.rb:5:in `index' 

这是我在控制器中使用它的方式:

 @meals = current_user.meals.order("created_at DESC").paginate(:page => params[:page], :per_page => 6) 

我的观点是:

  

我已经尝试过“ 生产中的will_paginate错误NoMethodError([]:ActiveRecord :: Relation的未定义方法`页面’)中提出的解决方案”和GitHub上的相同问题,但它不起作用。 我还检查了服务器和本地具有相同的Ruby安装。

这在开发中有效。 服务器设置为:Ubuntu 12.10,Nginx,Unicorn,Capistrano,Ruby 2.0.0p247,Rails 4.0.0。 有什么建议?

我的gemfile是:

 source 'https://rubygems.org' gem 'rails', '4.0.0' gem 'zurb-foundation', '~> 4.0.0' gem "figaro" gem 'will_paginate', '~> 3.0.5' gem 'carrierwave' gem 'mini_magick' gem 'bcrypt-ruby', '~> 3.0.0' gem 'unicorn' gem 'capistrano' gem 'rvm-capistrano' group :development, :test do gem 'sqlite3' gem 'rspec-rails', '~> 2.0' gem 'fabrication' gem 'faker' end group :test do gem "shoulda-matchers" end group :production do gem 'pg' end gem 'sass-rails', '~> 4.0.0' gem 'uglifier', '>= 1.3.0' gem 'coffee-rails', '~> 4.0.0' gem 'jquery-rails' gem 'turbolinks' gem 'jbuilder', '~> 1.2' 

Deploy.rb是:

 require "bundler/capistrano" require "rvm/capistrano" server "xxxx", :web, :app, :db, primary: true set :application, "xxxx" set :user, "xxxx" set :port, xxxx set :deploy_to, "/home/#{user}/apps/#{application}" set :deploy_via, :remote_cache set :use_sudo, false set :scm, "git" set :repository, "git@github.com:xxxx/#{application}.git" set :branch, "master" default_run_options[:pty] = true ssh_options[:forward_agent] = true after "deploy", "deploy:cleanup" # keep only the last 5 releases namespace :deploy do %w[start stop restart].each do |command| desc "#{command} unicorn server" task command, roles: :app, except: {no_release: true} do run "/etc/init.d/unicorn_#{application} #{command}" end end task :setup_config, roles: :app do sudo "ln -nfs #{current_path}/config/nginx.conf /etc/nginx/sites-enabled/#{application}" sudo "ln -nfs #{current_path}/config/unicorn_init.sh /etc/init.d/unicorn_#{application}" run "mkdir -p #{shared_path}/config" put File.read("config/database.example.yml"), "#{shared_path}/config/database.yml" puts "Now edit the config files in #{shared_path}." end after "deploy:setup", "deploy:setup_config" task :symlink_config, roles: :app do run "ln -nfs #{shared_path}/config/database.yml #{release_path}/config/database.yml" end after "deploy:finalize_update", "deploy:symlink_config" desc "Make sure local git is in sync with remote." task :check_revision, roles: :web do unless `git rev-parse HEAD` == `git rev-parse origin/master` puts "WARNING: HEAD is not the same as origin/master" puts "Run `git push` to sync changes." exit end end before "deploy", "deploy:check_revision" end 

更新:我重新安装了服务器,现在它可以正常工作。 不知道为什么……

我重新安装了服务器,现在它可以正常工作。 不知道为什么……

我在使用新的rails 5应用程序时遇到了类似的问题。

我尝试重启服务器但没有成功。 修复它的原因是重启spring服务器(停止其他rails进程后):

 $ spring stop 

然后我重新启动了rails服务器,一切都恢复了!

我会尝试不同版本的gem,如果这不起作用尝试添加

 require 'will_paginate' 

在meals_controller.rb

您也可以尝试全新安装所有gem。

 bundle clean --force bundle install 

祝好运!

试试这个:

重新启动Web服务器对我有用!

 First quit the web server by typing "Control c" on your terminal and then $ rails server 

之后,在你的网络浏览器上转到你的http:// localhost:3000 ,你现在应该没事了!