我是一个有用的助手,可以为您翻译文本。
在注释之间的代码会在系统无法创建相应的注册时销毁刚创建的用户对象。它在开发服务器上运行良好,但在生产服务器上却不行,在那里即使保存注册失败,User对象仍然固执地留在数据库中。将更改推送到生产环境只需要上传控制器文件并通过shell执行
感谢您的关注!
贾斯汀
编辑:两个安装程序中
在开发过程中,这三个标志的值会被设置为它们的相反值。谢谢!
我正在对使用 Phusion Passenger部署的Rails网站进行维护工作。该工作流程与标准的三层Railsian测试-开发-生产安排略有不同。相反,有两个针对并行Oracle数据库运行的相同代码库的单独安装;开发站点位于qa.domain.com,而实时站点位于www.domain.com
我在以下代码片段(来自“vendors_controller.rb”,使用AuthenticatedSystem)中在两个环境中遇到了不同的行为:
def create
@user = current_user || User.new(params[:user])
@registration = Registration.new(params[:registration])
unless current_user
@user.user_type = 'vendor'
@user.active = 1
if @user.save
@user.activate!
@user.has_role 'owner', @user
@user.has_role 'vendor'
self.current_user = user = @user
@registration.active = 1
@registration.email = @user.email
@registration.user_id = @user.id
if @registration.save
send_confirmation(@user)
send_solicitations_notifications(@registration) if @registration.notification_desired == true
redirect_to thank_you_vendors_path
else
# THIS BEHAVIOR DIFFERS ACROSS PRODUCTION AND DEVELOPMENT
@user.destroy
self.current_user = user = nil
# END DIFFERENCE
respond_to do |format|
format.html { render :action => 'new' }
format.xml { render :xml => @registration.errors, :status => :unprocessable_entity }
end
end
else
respond_to do |format|
format.html { render :action => 'new' }
format.xml { render :xml => @user.errors, :status => :unprocessable_entity }
end
end
...
在注释之间的代码会在系统无法创建相应的注册时销毁刚创建的用户对象。它在开发服务器上运行良好,但在生产服务器上却不行,在那里即使保存注册失败,User对象仍然固执地留在数据库中。将更改推送到生产环境只需要上传控制器文件并通过shell执行
touch tmp/restart.txt
。两个代码库除此之外完全相同,是什么导致了这种差异呢?感谢您的关注!
贾斯汀
编辑:两个安装程序中
production.rb
存在一些差异,这可能有助于诊断问题。在生产环境中,config.cache_classes = true
# Full error reports are disabled and caching is turned on
config.action_controller.consider_all_requests_local = false
config.action_controller.perform_caching = true
在开发过程中,这三个标志的值会被设置为它们的相反值。谢谢!