生产服务器上无法启动rails 4控制台

有一个奇怪的问题,需要帮助。

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

FWIW,我已经做了4年的rails开发人员,并且一直在大量的其​​他服务器上完成这个任务。 在这个服务器上,我可以放下,创build,迁移,播种数据库没有问题(使用RAILS_ENV =生产),而且应用程序正常工作没有任何问题。

build立:

Ubuntu 14.04(racksapce第二代性能1服务器)
带有Passenger的Nginx(我通常使用Unicorn,但从来没有任何与Passenger部署的应用程序有问题)
Ruby 2.1.5(使用rvm)
Rails 4.1.7
Postgres的
Capistrano 3(使用rvm,迁移,资产预编译等扩展)

我试过了:

cd进入app目录:

cd /home/deployer/app_name/current 

其中加载.rvmrc,并显示我在正确的gemset,运行捆绑只是踢。

 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?) 

再次,我已经login到数百个nginx / apache的生产控制台上,这两个版本都是与旧版本和新版本的Unicorn以及大多数旧版本的Passenger一起部署的。

这是我第一次得到这个消息,控制台是唯一的东西,似乎被打破 – 一切工作正常! 该应用程序是现场直播,效果很好。

我知道,首先要提出的是,我不从应用程序目录运行rails c的生产 – 我已经cd到正确的目录至less10次,并手动加载正确的gemset,这不是问题。

无法弄清楚为什么它在开发中可以正常工作,而不是在生产中。 我知道以前有一个脚本目录(可能是rails 2?) – 是否还有一个目录包含可能已损坏的rails的脚本命令?

有没有人曾经经历过这个或有任何build议?

我觉得我失去了一些东西。

好吧,发现这个问题…… @stoodfarback是非常接近的,但我认为这个问题的原因需要提及其他谁可能遇到同样的事情。

基本上我使用的是比以前更新版本的Capistrano(3.3.5),它(默认情况下)将'bin'添加到每个部署符号链接的共享目录列表中。

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

因此,部署脚本在共享调用bin(这是空的)中创build了一个新目录,用于启动rails server和console的文件丢失了。 他们显然还在发展中,所以只影响生产。

从linked_dirs列表中删除“bin”,现在所有东西都按预期工作。

现在看起来像:

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

我已经注意到我曾经使用的Capistrano的最后几个版本,linked_dirs的格式和默认值不断变化,但是我从来没有在这个列表中看到bin。 不知道为什么斌需要符号链接…它只有默认的rails文件,我想不出为什么他们需要从源代码pipe理中删除,但也许Capistrano团队有一个原因。

希望这有助于某人。

检查你是否有任何这些文件,并尝试删除它们:

  • script/rails
  • bin/rails
Interesting Posts