我有一个非常奇怪的问题,在我的生产环境(FreeBSD/Apache/Passenger/MySQL)的测试/错误修复过程中出人意料地出现了:
$ tail log/production.log
Started GET "/users/sign_up" for 192.168.5.7 at 2011-08-06 21:37:53 +0400
Processing by Devise::RegistrationsController#new as
SQL (1.5ms) SHOW TABLES
Completed in 15ms
NoMethodError (undefined method `new_with_session' for #<Class:0x2b2a4e34>):
app/controllers/registrations_controller.rb:71:in `build_resource'
app/controllers/registrations_controller.rb:8:in `new'
用户管理是用 Devise gem 组织的。登录页面正常,注册页面抛出此错误。
一切都很顺利,直到我更改了数据库中的一个字段(与设计无关)(更改类型 int -> bigint),并上传了 db/schema.rb 和 db/migrations/20110412205837_rename_files.rb。然后我重置数据库
$ rake db:setup RAILS_ENV='production'
,重新启动应用程序
$ touch tmp/restart.txt
,尝试注册为新用户 - 然后在日志文件中看到那个不愉快的错误页面和 NoMethodError 报告。我没有更改 models/user.rb 文件中的设计部分(好的,我做了,但在那之后我也重新启动了应用程序,一切都很好)。
这是我的模型/user.rb 设计部分:
devise :database_authenticatable, :registerable
我确信这是一个悲惨的问题,也许是其他东西的错误输入,一个非常小的讨厌的错误,但我无法想象它会是什么......我已经找了两天了,但我没有不知道去哪里找。请人帮忙!
我已经尝试过以下方法:
- 回到之前版本的db/schema.rb,并重置DB;
- 降级到整个rails应用程序的上一个版本;
- 移动 app/controllers/registrations_controller.rb 到 app/controllers/devise 和 app/controllers/registrations 目录;
- 将设计宝石从 1.1.7 降级到 1.1.2;
- 重启Passenger、Apache和整个FreeBSD;
- 查看 /var/log/httpd.log 和 /var/log/httpd_error.log 文件;
- 重新创建数据库;
- 检查并重新创建 MySQL 用户和授权;
- 捆绑更新;
没有什么帮助...
我还可以做些什么?为什么会出现这个问题?
非常感谢任何提前输入!