首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Phusion乘客下,SQL不会在生产中执行

在Phusion乘客下,SQL不会在生产中执行
EN

Stack Overflow用户
提问于 2011-07-09 20:40:38
回答 2查看 117关注 0票数 1

我有一个类似于以下代码的代码:

代码语言:javascript
复制
class TheClass < ActiveRecord::Base
  connection.execute "set language 'us_english'"
  // the rest of the code
end

execute命令不会在生产过程中被执行!使用Mongrel是可以的,将代码放入稍后调用的函数工作,Passenger+development设置也能工作。

乘客处理连接或类实例化的方式有什么不同吗?

编辑:

很明显,这是乘客连接的方式。因此,问题归结为“在建立连接时是否有一种支持的方法来执行SQL语句?”

EN

回答 2

Stack Overflow用户

发布于 2011-07-10 07:25:46

我的精神调试显示你被乘客的叉子咬了。

基本上,乘客叉出一个主进程,它已经加载了您的rails环境。这减少了工人初始化所需的时间,因为您的所有模型、控制器等类都已经存在。

现在,从乘客资料来看:

注意到,Phusion乘客在创建新的工作进程时会自动重新建立到数据库的连接,这就是为什么在使用智能产卵模式时通常不会遇到任何数据库问题。

connection.execute语句在加载TheClass时运行。这实际上只发生了一次,在父进程中是分叉所有的工人。每个工作人员都建立自己的连接,但不会运行您的“set语言”查询,因为TheClass已经加载。它在dev模式下工作,因为每次都会重新加载类。

您可以在application.rb中进行某种设置,告诉ActiveRecord您的连接语言,否则您可能不得不在before_filter或其他地方运行该查询。

票数 1
EN

Stack Overflow用户

发布于 2011-07-10 01:03:49

检查乘客错误日志,这些可能与标准rails日志文件不同。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6637340

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档