2013-01-02 5 views
1

다음 코드는 내 레일 애플 리케이션의 루트 폴더에 살고 daemonizes/실행 myserver.rb.'필수'rvm 함께 작동하지 않습니다

# myserver_control.rb 

require 'rubygems' 
require 'daemons' # causes 'no such file to load -- daemons' error since gem reinstall with rvm 

@options = { 
    # options defined 
} 

Daemons.run('myserver.rb', @options) 

내가 RVM을 설치 때까지 잘 작동되었고, 지금은 데몬 보석을 찾을 수 없습니다. 어쩌면 위의 시스템 데몬 폴더를 어딘가에 검색하는 것 같은 느낌이 들었습니까? 대신 rvm 데몬을 설치 한 보석을 사용할 수 있습니까? 데몬 젬을 찾을 수있는 시스템 레벨에 데몬 젬을 어떻게 설치합니까? 아니면 rvm이 설치 한 보석을 찾을 수 있도록 어떻게 만드나요?

현재 '시스템'보석 세트도 없습니다. 이미 rvm을 설치 한 후 시스템 레벨에 보석을 설치하려면 어떻게해야합니까? 시스템 루비와 보석을 사용하고자하는 경우

+0

myserver.rb를 어떻게 실행하고 있습니까? –

+0

커맨드 라인에서'sudo ruby ​​myserver_control.rb start'를 실행합니다. 이것은 데몬 ruby ​​gem이 제공하는 명령입니다. – pitachip

+2

sudo에서 실행되지 않음 – Egryan

답변

1

당신은 시스템 설치 루비와 보석을 사용할 수 있도록합니다

rvm use system 

를 입력 할 수 있습니다,하지만 난이 좀의 나는 것 RVM을 사용하는 목적을 패배 생각 대신 RVM에 기본 루비를 설치하고 그 안에 젬을 설치하십시오. 당신이 그것을 설치 한 후 기본 루비를 설정하려면, 문제는 실행 sudo를 함께 놓여 의견을 바탕으로이

rvm --default use 1.9.2 

편집

를 입력이 RVM의 새로운 서브 쉘 다른 인스턴스를 생성

+0

내 레일 앱 일반적으로 rvm 설치된 보석을 사용하고 있습니다. 그러나 위의 데몬 제어 코드는 자체 동작을 표시하는 것으로 보입니다. rvm이 설치된 보석을 사용하는 대신 시스템 보석을 찾고 있습니다. 그래서 그것을 만드는 방법을 알아 내려고 노력 중입니다. (1) rvm이 설치된 데몬 보석을 찾으십시오. - 찾을 수 없거나 (2) 시스템 레벨에 데몬 보석을 설치하십시오. - 이미 rvm이 설치되어 있다고 생각하십시오. 이 두 가지 해결책 중 하나에 대한 조언은 훌륭합니다. – pitachip

+0

잘하면 rvm 시스템을 사용하면 시스템에 설치된 루비와 보석으로 돌아가 데몬 보석을 설치할 수 있습니다. 빠른 질문은 rvm을 설치하고 설정 한 후 보석을 다시 설치하는 것입니다.ie 그러나 gemfile에있는 dameons gem은 번들 업데이트를 실행합니다 – Egryan

+0

예. 내 Gemfile에 필요한 모든 보석을 가지고 있으며 번들 업데이트를 실행하고 모든 보석이 예상 폴더에 설치되었습니다. 내 보석에 대한 잘못된 위치 (시스템 보석 폴더)를보고있는 것은 내 루비 스크립트입니다. – pitachip

0

RVM은 gemsets이라는 개념을 사용합니다. gemsets은 사용할 수있는 보석의 고유 한 그룹이며 대부분은 루비 버전에만 해당합니다 (응용 프로그램이나 전역에 맞게 지정할 수 있음).

루비 버전을 변경할 때 RVM이 GEM_HOME을 변경하여 보석이 설치된 위치를 알려줍니다. 따라서 RVM을 설치할 때 새로운 빈 gemset을 만들고 RVM이이를 사용하도록 rubygem에게 알립니다.

보석이 항상 루비 젬간에 상호 호환되는 것은 아니기 때문입니다.

그러나 레일스 애플리케이션을 작성하는 경우 위의 내용을 무시하고 bundler를 사용해야합니다. 장소 'gem "데몬"나는 당신의 Gemfile이고 앱 루트 디렉토리에서 번들 업데이트를 실행합니다.

번들을 사용하면 앱 단위로 보석을 관리 할 수 ​​있으므로 보석을 다른 곳으로 업그레이드하면 앱이 손상되지 않습니다. 그것을 사용하고 그것이 작동하는 방법을 아는 것은 모범 사례입니다. 행운을 빕니다.

+0

예, 이것이 모든 것을 설치 한 방법이며 내 레일 앱 자체가 확실히 모든 보석을 찾을 수 있습니다. 위의 앱과 같이 내 앱의 보석을 찾을 수없는 작은 작업을하는 서버 스크립트입니다. 어떻게 든 rvm 설치된 보석에 대한 전체 경로를 제공 할 수 있습니까? – pitachip

관련 문제