launchctl-실행 된 스크립트에서 시스템 Ruby 대신 rvm을 사용합니까?


1

다음과 같이 정의한 launchctl 작업이 있습니다.

<key>ProgramArguments</key>
    <array>
        <string>/bin/sh</string>
        <string>-c</string>
        <string>~/projects/script.sh</string>
    </array>

script.sh를 수동으로 실행하면 현재 구성된 rvm 버전의 루비를 사용하므로 스크립트가 제대로 작동합니다. launchctl을 통해 이것을 실행하면 시스템 버전의 Ruby가 사용되어 스크립트가 손상됩니다. 사용 가능한 올바른 루비 버전으로이 스크립트를 실행하려면 어떻게해야합니까?

답변:


0

올바르게 설정되어 있는 프로그램을 호출하기 전에 script.sh환경 변수 설정으로 변경하십시오 .PATHPATH


유일한 문제는 RVM이 동적으로 현재 Ruby를 가리키고 있다는 것 ~/.rvm/rubies/ruby-1.9.3-head/bin/ruby입니다. 포함 할 수있는 고정 경로가 없습니다.
slhck 2016 년

0

가장 좋은 방법은 루비 환경을로드 한 다음 스크립트를 실행하는 rvm "래퍼"를 사용하는 것입니다. 더 많은 정보를 위해서:

$ rvm help wrapper

예:

$ rvm wrapper 2.0.0 hello
$ hello_ruby -e "puts RUBY_VERSION"
$ hello_rake -T
$ which hello_ruby # => /Users/me/.rvm/bin/hello_ruby

...기타...

시작된 설정에서 "/Users/me/.rvm/bin/hello_ruby"를 실행 파일로 사용할 수 있으며 rvm 환경이 설정됩니다.

패치 수준이 나오면 rvm을 업그레이드하면 래퍼가 실행 된 파일을 언로드 /로드 할 필요없이 최신 패치 된 루비를 가리킬 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.