【问题标题】:rails3 app ENV not being recognized as productionrails3 app ENV未被识别为生产
【发布时间】:2011-04-11 03:09:19
【问题描述】:

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

我将应用通过 SFTP 传输到服务器,更新了捆绑包,设置了我的虚拟主机并将 RailsEnv 指定为生产环境,并且路径都是准确的。

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

我不知道为什么,我做了所有应该让它投入生产的事情?有人知道我可能错过了什么吗?应用程序中是否有我应该更改某些内容以说生产环境的地方?我认为只需要在 rails 2.x 中完成

提前感谢所有帮助。

【问题讨论】:

  • 当您说您输入了rake db:migraterails console 时,您输入的就是这些吗?或者您是否将RAILS_ENV=production 附加到命令中?还是您将 RAILS_ENV 环境变量设置为 production
  • 我在哪里设置 RAILS_ENV 环境.. 我读过的所有内容都说这仅适用于 rails 2.x 而不是 rails 3。这就是为什么我不知道该怎么做。但是 Phusion Passenger 和我读过的所有其他内容都说你只需要通过我所做的“RailsEnv 生产”将它设置在你的虚拟主机文件中
  • 不,我没有将 RAILS_ENV=production 附加到命令中,但即使我这样做了,那也仅适用于这些命令,但我的服务器不会在生产中为我的应用程序提供服务

标签: ruby-on-rails apache passenger production


【解决方案1】:

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)

【讨论】:

  • 谢谢各位,您对此有所了解。看起来我手上还有另一个问题,乘客告诉我我的应用程序助手中有一些语法错误,但这可能与 gem 问题或其他问题有关
【解决方案2】:

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

rails 控制台命令默认为“开发”环境。运行数据库迁移也是如此。

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

RAILS_ENV=production rake db:migrate

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

rails console production

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 2022-06-28
      • 2014-05-23
      • 2019-06-13
      • 2018-07-28
      • 2022-11-11
      • 1970-01-01
      • 2017-05-15
      • 2016-12-22
      • 2012-02-28
      相关资源
      最近更新 更多