programing

로드 시 Ruby on Rails 콘솔이 중단됨

powerit 2023. 6. 2. 21:22
반응형

로드 시 Ruby on Rails 콘솔이 중단됨

어떤 이유로든 Ruby on Rails 콘솔은 시작을 거부하고 중단됩니다.나는 내 코드를 변경하지 않았고, 같은 버전의 Ruby와 Ruby on Rails를 사용하는 다른 프로젝트들은 문제가 없습니다.마지막으로 + 스프링을 가리키는 스택 추적을 받습니다.

왜 이런 일이 한 순간부터 다음 순간까지 일어나고 있는지, 어디서 잘 작동했는지 설명할 수 없습니다.저는 RVM을 통해 모든 보석을 지우고 bundle 명령어를 다시 설치했지만 여전히 운이 없습니다.어떤 아이디어든 감사하겠습니다.

또한 Ruby on Rails 서버는 제가 알기로는 문제가 없습니다.이 문제는 프로젝트와 관련이 있지만 코드는 변경되지 않았으며 Ruby on Rails 콘솔에만 문제가 있습니다.

루비 2.1.2
레일 4.1.4

user_a@ubuntu:~/work/app_a$ rails console
^C/home/user_a/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/lib/spring/client/run.rb:54:in `gets': Interrupt
    from /home/user_a/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/lib/spring/client/run.rb:54:in `verify_server_version'
    from /home/user_a/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/lib/spring/client/run.rb:25:in `call'
    from /home/user_a/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/lib/spring/client/command.rb:7:in `call'
    from /home/user_a/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/lib/spring/client/rails.rb:23:in `call'
    from /home/user_a/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/lib/spring/client/command.rb:7:in `call'
    from /home/user_a/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/lib/spring/client.rb:26:in `run'
    from /home/user_a/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/bin/spring:48:in `<top (required)>'
    from /home/user_a/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/lib/spring/binstub.rb:11:in `load'
    from /home/user_a/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/lib/spring/binstub.rb:11:in `<top (required)>'
    from /home/user_a/work/app_a/bin/spring:16:in `require'
    from /home/user_a/work/app_a/bin/spring:16:in `<top (required)>'
    from bin/rails:3:in `load'
    from bin/rails:3:in `<main>'

user_a@ubuntu:~/work/app_a$

Spring을 다시 시작하면 행잉 명령이 수정됩니다.

$ bin/spring stop

새로운 Ruby on Rails 응용 프로그램을 삭제하고 다시 만든 후 명령(rake, bin/rails 등)을 중단하는 경험을 했습니다.구글은 그렇게 도움이 되지 않았습니다.이게 맞았으면 좋겠어요.

명령을 다시 실행하면 스프링이 자동으로 시작됩니다.

스프링이 이상한 원인으로 의심되면 다음 명령을 실행합니다.

spring stop && spring start

Spring gem 버전이 뭔가 잘못된 것 같습니다.

젬 파일로 이동하여 젬 '봄'에 대해 설명합니다.그럼 실행bundle install다시 시도합니다.

# gem 'spring'

그리고 나서:

bundle install

작업이 보석에 의존하는 경우 다음 방법으로 보석을 업데이트해 보십시오.

bundle update

한다면$ bin/spring stop문제가 해결되지 않습니다. 그런 다음 고립된 Spring 프로세스가 아직 남아 있지 않은지 확인하십시오.

$ ps aux | grep -i spring

다음과 같은 것을 본다면,

user  7163  0.0  0.0 110356  2165 pts/3    S+   19:40   0:00 grep --color=auto -i spring
user 16980  0.0  0.4 398826 17580 ?        Sl   Aug31   0:00 spring server | current | started 277 hours ago     

그런 다음 오류가 발생한 스프링 프로세스를 종료하고 콘솔을 다시 시작해 보십시오.

$ kill -9 16980 
$ rails c

스프링 보석의 lib/application.rb 파일에서 다음 방법을 변경하면(gem info spring 명령으로 경로를 표시할 수 있음) 다음과 같이 유용합니다.

def eager_preload
      with_pty do
        # we can't see stderr and there could be issues when it's overflown
        # see https://github.com/rails/spring/issues/396
        STDERR.reopen("/dev/null")
        preload
      end
end

https://github.com/markiz/spring/commit/5f3ab734fc45d541aaaccb05b59cd95aa49fe8ef 을 참조하십시오.

언급URL : https://stackoverflow.com/questions/25027284/ruby-on-rails-console-is-hanging-when-loading

반응형