当ssh cli会话启动时,远程SDK启动rails服务器退出

时间:2017-08-29 21:04:37

标签: ruby-on-rails shell ssh

我正在无头虚拟机上工作并配置我的主机Rubymine通过VirtualBox的NAT接口使用远程SDK。

配置远程SDK后,我的运行/调试配置看起来很好。当我启动服务器时,它返回以下输出

/usr/bin/ruby -e '$stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift)' /home/user/project/bin/rails server -b 0.0.0.0 -p 3000 -e development
git://github.com/rails/sprockets-rails.git (at master@06852de) is not yet checked out. Run `bundle install` first.

Process finished with exit code 11

当我启动相同的命令时,ssh进入VM,服务器启动正常

SDK似乎有效;它调用/usr/bin/ruby这是正确的路径(没有rvm)

安装的gem lib应该没问题,因为一切都在ssh命令行中运行

Gemfile中的相关行

gem 'sprockets-rails', github: 'rails/sprockets-rails'
ruby '2.3.1'
gem 'rails', '~> 4.2'

宝石安装在~/.gem/ruby/2.3.0/bin/

输出运行bundle install的建议是没用的,因为我在cli中做了并且仍在工作。看起来Rubymine需要调整。有谁知道我能做些什么?

1 个答案:

答案 0 :(得分:0)

找到了答案!

原因是非交互式shell会话,其中较少的点文件来源(请参阅man bash并搜索non-interactive

当我尝试使用我的主机系统时,我知道它与Rubymine无关:​​

ssh user@127.0.0.1 "/usr/bin/ruby /home/user/project/bin/rails server -b 0.0.0.0 -p 3000 -e development"

提供与Rubymine相同的输出

还要检查ssh user@127.0.0.1 "env"以查看shell环境的变量。

man sshd 8说明了如何设置环境,使用~/.ssh/environment(服务器上的文件,因为手册页是sshd)来存储key/valueKEY=value

  

此文件在登录时读入环境(如果存在)。它可以   只包含空行,注释行(以'#'开头),和   形式名称=值的赋值行。该文件应该是可写的   只有用户;它不需要其他人可读。环境   默认情况下禁用处理,并通过   PermitUserEnvironment选项。

请注意PermitUserEnvironment选项,进入服务器上的sshd.conf