rails3 app ENV未被识别为生产

时间:2011-04-11 03:09:20

标签: ruby-on-rails apache passenger production

我在我的linode VPS上设置了我的rails应用程序,phusion乘客已安装并正常工作,mysql也是如此(我知道这是因为我的朋友目前正在使用相同的设置运行2个生产应用程序)。 VPS正在运行Ubuntu 10.10,而我正在使用apache2和乘客。

我将应用程序SFTP到服务器,更新了捆绑包,设置了我的虚拟主机并指定了RailsEnv进行生产,路径都是准确的。

然后我重启服务器(以root用户身份)     apachectl -k restart 试图挖掘db:migrate并且它没有做任何事情,所以我认为这是因为环境没有改变,这正是发生的事情。如果我进入rails控制台并输入Rails.env,它就会让我开发。

我不知道为什么,我做了所有应该将它设置为生产的东西?谁知道我可能错过了什么?在应用程序的某个地方,我应该改变一些说生产环境的东西吗?我认为只需要在rails 2.x

中完成

提前感谢您提供任何帮助。

3 个答案:

答案 0 :(得分:16)

RailsEnv设置仅供乘客使用。它不会影响您在shell中键入的命令。

使用

RAILS_ENV=production rake db:migrate

RAILS_ENV=production rails console

或者将登录shell中的RAILS_ENV环境变量设置为production,这样您就不必将RAILS_ENV=production附加到您发出的命令中:

export RAILS_ENV=production

(确切的命令可能会有所不同,具体取决于您使用的shell;上面的内容适用于bash)

答案 1 :(得分:1)

你走在正确的轨道上;在生产模式下实际运行应用程序所需要做的就是设置RailsEnv,假设您使用Passenger运行应用程序。但是,要运行数据库迁移,您需要告诉Rails要在其中运行的环境。

默认情况下,rails console命令默认为“开发”环境。运行数据库迁移也是如此。

要在生产环境中运行迁移,您需要按以下方式运行命令:

RAILS_ENV=production rake db:migrate

要在生产模式下运行控制台,您需要使用以下命令运行控制台:

rails console production

答案 2 :(得分:0)

如果您希望自动设置此变量,请将RAILS_ENV=production放在~/.bashrc文件的末尾。 (这仅适用于bash终端)

然后打开一个新终端,或重新启动ssh连接。