有个奇怪的问题需要帮助.

我试图在生产服务器上启动rails控制台,它的行为就像rails c命令不存在一样.

FWIW,我已经做了4年的rails开发人员,并且一直在大量其他服务器上这样做,没有任何问题.在这台服务器上,我可以毫无问题地删除、创建、迁移、为数据库添加种子(使用RAILS_ENV=production),应用程序可以正常运行,没有任何问题.

Setup:

Ubuntu 14.04(racksapce第二代性能1服务器)

What I've tried:

将cd放入应用程序目录:

cd /home/deployer/app_name/current

它装载了.rvmrc并显示我在正确的Ruby 中,跑Bundle 只是为了踢.

rails c production # (which usually works no problem)

bundle exec rails c production # (sometimes have to do this on older apps that do not have the newer capistrano 3 and rvm setup)

rails c production RAILS_ENV=production # (getting desperate here)

RAILS_ENV=production rails c production # (haha, surely this won't work, but out of options)

RAILS_ENV=production bundle exec rails console

每次我都会收到一条通知,暗示"rails c"不是有效的命令:

Usage:
  rails new APP_PATH [options]

Options:
  -r, [--ruby=PATH]                                      # Path to the Ruby binary     of your choice

..... yada yada, shows the rest of the rails options (oddly enough does not show 'c' or 'console' as options?)

同样,我已经登录了nginx/apache上的数百个生产控制台,这些控制台部署了Unicorn的旧版本和新版本,以及大部分旧版本的Passenger.

这是我第一次收到这个消息,控制台是唯一一个似乎坏了的东西——其他一切都很好!该应用程序是实时的,效果很好.

我知道,首先要建议的是,我没有从应用程序目录运行rails c产品——我已将cd光盘放入正确的目录至少10次,并手动加载了正确的gemset,这不是问题所在.

我不明白为什么它在开发中运行良好,但在生产中却不行.我知道不久前有一个脚本目录(可能是rails 2?)-是否还有一个目录包含可能已损坏的rails脚本命令?

以前有没有人经历过这种情况,或者有什么建议?

我觉得我错过了什么.

推荐答案

好的,找到问题了@stoodfarback非常接近,但我认为这个问题的原因需要向其他可能遇到同样情况的人提及.

基本上,我使用的Capistrano(3.3.5)版本比我过go 使用的版本更新,它(默认情况下)将"bin"添加到共享目录列表中,并在每次部署时对其进行符号链接.

set :linked_dirs, fetch(:linked_dirs, []).push('bin', 'log', 'tmp', 'public/system', "public/downloads", "public/assets")

因此,部署脚本在shared中创建了一个名为bin的新目录(该目录为空),用于启动rails服务器和控制台的文件丢失.很明显,它们仍在开发中,因此它只会影响生产.

从链接目录列表中删除"bin",现在一切正常.

现在看来:

set :linked_dirs, fetch(:linked_dirs, []).push('log', 'tmp', 'public/system', "public/downloads","publ ic/assets")

我注意到,在我使用的Capistrano的最后几个版本中,链接目录的格式和默认值一直在变化,但我从未在该列表中看到过bin.不确定为什么bin需要符号链接...它只有默认的rails文件,我想不出为什么需要从源代码管理中删除它们,但Capistrano团队可能有原因.

希望这对别人有帮助.

Ruby-on-rails相关问答推荐

对Rails进行枚举不允许空值

Rails turbo流只更新页面上的一个元素

GO AES GCM加密在解密时出错&S

是否从已转换为字符串的数组中提取符号?

Grape api (rails) - 未初始化常量 Endpoints::TodoAPI (NameError)

如何将 ActionController::RoutingError 分类为 Sentry 中的错误

active_storage.resolve_model_to_route的不同值代表什么意思?

Ruby - 如何删除目录中早于 X 天的所有文件?

无法加载此类文件 -- mysql2/mysql2

基于 2 列定义唯一主键

使用回形针调整图像大小

通过字符串获取 ActiveRecord 对象的属性

在 ruby​​ on rails 上构建方法

在 Controller 中调用模型方法

Redis 引发需要 NOAUTH 身份验证错误,但没有设置密码

rails 获取应用程序根/基本 url

Rails 3:乘客找不到Bundle 程序安装的 git gem

您如何查看 ruby​​ 中的调用堆栈示例?

RoR select_tag 默认值和选项

ActionMailer 在开发 Rails 4 中不发送邮件