Ruby on rails 如何解决;“拒绝连接”;执行bin/rails(spring)命令时?

Ruby on rails 如何解决;“拒绝连接”;执行bin/rails(spring)命令时?,ruby-on-rails,spring-gem,Ruby On Rails,Spring Gem,只要禁用Spring,我就可以在生产环境(FreeBSD 10)中执行rails-命令: # DISABLE_SPRING=1 bin/rails runner -e production 'p "test"' "test" # script/rails runner -e production 'p "test"' "test" 使用Spring,rails-命令失败,出现以下错误: # bin/rails runner -e production 'p "test"' /usr/loc

只要禁用Spring,我就可以在生产环境(FreeBSD 10)中执行
rails
-命令:

# DISABLE_SPRING=1 bin/rails runner -e production 'p "test"'
"test"

# script/rails runner -e production 'p "test"'
"test"
使用Spring
rails
-命令失败,出现以下错误:

# bin/rails runner -e production 'p "test"' 
/usr/local/rvm/gems/ruby-2.0.0-p481/gems/spring-1.1.3/lib/spring/client/run.rb:20:in `initialize': Connection refused - "/tmp/spring/6e31dd16c1146fc209ac385f36aac9a1" (Errno::ECONNREFUSED)
        from /usr/local/rvm/gems/ruby-2.0.0-p481/gems/spring-1.1.3/lib/spring/client/run.rb:20:in `open'
        from /usr/local/rvm/gems/ruby-2.0.0-p481/gems/spring-1.1.3/lib/spring/client/run.rb:20:in `server'
        from /usr/local/rvm/gems/ruby-2.0.0-p481/gems/spring-1.1.3/lib/spring/client/run.rb:54:in `verify_server_version'
        from /usr/local/rvm/gems/ruby-2.0.0-p481/gems/spring-1.1.3/lib/spring/client/run.rb:25:in `call'
        from /usr/local/rvm/gems/ruby-2.0.0-p481/gems/spring-1.1.3/lib/spring/client/command.rb:7:in `call'
        from /usr/local/rvm/gems/ruby-2.0.0-p481/gems/spring-1.1.3/lib/spring/client/rails.rb:23:in `call'
        from /usr/local/rvm/gems/ruby-2.0.0-p481/gems/spring-1.1.3/lib/spring/client/command.rb:7:in `call'
        from /usr/local/rvm/gems/ruby-2.0.0-p481/gems/spring-1.1.3/lib/spring/client.rb:26:in `run'
        from /usr/local/rvm/gems/ruby-2.0.0-p481/gems/spring-1.1.3/bin/spring:48:in `<top (required)>'
        from /usr/local/rvm/gems/ruby-2.0.0-p481/gems/spring-1.1.3/lib/spring/binstub.rb:11:in `load'
        from /usr/local/rvm/gems/ruby-2.0.0-p481/gems/spring-1.1.3/lib/spring/binstub.rb:11:in `<top (required)>'
        from /usr/local/rvm/rubies/ruby-2.0.0-p481/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
        from /usr/local/rvm/rubies/ruby-2.0.0-p481/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
        from /s/usr-local/www/the_project/releases/20140724133941/bin/spring:16:in `<top (required)>'
        from bin/rails:3:in `load'
        from bin/rails:3:in `<main>'

对此有一些想法,spring服务器似乎无法启动或不允许您连接到套接字:

  • 检查套接字文件和包含文件夹的权限和所有权
    /tmp/spring

  • 尝试删除套接字文件,将
    /tmp/spring
    上的文件夹权限更改为
    777
    (仅排除这是根本原因),然后重新启动应用程序/服务器

  • 您是否检查了
    spring/server
    是否正在实际运行?客户机会尝试恢复),但如果不起作用,则会得到
    econnreference
    。尝试调试到spring源代码中

  • 如果您认为服务器正在运行,
    lsof | grep'/tmp/spring/6e31dd16c146fc209ac385f36aac9a1'
    是否提供了任何信息?关于服务器进程,
    ps-ax | grep[processid]
    怎么说

  • 它的输出是什么

  • 尝试从日志文件中删除(查看消息)


我可以通过将用户登录shell更改为bash(之前,它被设置为zsh)并将此路径添加到~/.profile:
PATH=$GEM\u HOME/bin:$GEM\u HOME/wrappers:$PATH来解决此问题。

为了确保只使用RVM的ruby,我还强制删除了系统ruby(1.9.3):
pkg remove-f ruby

(注意:如果没有上面提到的路径设置,这将导致预期的错误
env:ruby:没有这样的文件或目录

为了使更改生效,似乎需要使用
killall ruby

也许一个
bin/spring-stop
也就足够了。

我偶然发现了这个问题,并显示了连接到spring服务器时出现
错误的消息

对我来说,解决方案非常简单:

spring stop

至此,我的
db:migrate
任务成功完成。

感谢您的提示,Wolfram。我以前检查过大部分东西。我在问题中添加了“更新1”。它包含对您的建议的回答。请注意,用户项目处于控制盘中。什么进程17260运行了四天?您是否尝试关闭所有服务器并重新启动?很高兴听到您解决了这个问题,我也有很多ruby/rvm问题。你不妨奖励我的答案,因为那些代表已经走了,非常感谢。:)我本来可以接受的,但我一直不在,直到现在我才看到你的评论。很抱歉
spring stop