2017-12-11 10 views
0

와 ldiff에 액세스 할 수 없습니다 루비 온 레일 (3.2) 다음과 같은 환경에 응용 프로그램 :diffy 내가 가진 vendored DIFF-LCS

  • 배포 : capistrano, 표준 폴더 구조 (my_app/current, /shared, /releases)
  • 루비 : v2.3/usr/local/bin/ruby에 출처에서 설치되었습니다. RVM 또는 rbenv
  • Bundler를 사용하지 : 카피 스트라 노 표준 계층 구조에서 my_app 수준에서 설치 capistrano-bundler를 사용을 my_app/shared/bundler
  • 응용 프로그램 서버 : passenger-phusion with nginx를 사용은, 시작은 systemctl

문제로 관리 : 나는 보석 diffy을 사용하고있는 diff-lcs이 제공하는 ldiff 실행 파일을 사용합니다. 이 실행 파일은 실제로 번들러 생성 스텁 인 /home/my_user/my_app/shared/bundle/ruby/2.3.0/bin/ldiff에 있습니다. 나는 다음과 같은 코드를 삽입 할 때 이제 : Diffy::Diff.new('abcd', 'abcde').to_s, 그루터기가 실행되고 다음과 같은 오류가 발생합니다 :이 레일 콘솔에서 작동

/usr/local/lib/ruby/site_ruby/2.3.0/rubygems.rb:289:in `find_spec_for_exe': can't find gem diff-lcs (>= 0.a) with executable ldiff (Gem::GemNotFoundException) 
from /usr/local/lib/ruby/site_ruby/2.3.0/rubygems.rb:263:in `bin_path' 
from /home/my_user/my_app/shared/bundle/ruby/2.3.0/bin/ldiff:24:in `<main>' 

참고하지만 서버한다. diffy.rb을 보면 diffy (실제 위치는 bundle exec diffy ...)가 실행중인 실제 명령을 제어 할 수 없습니다.

해결 방법? 유일한 방법은 판매 된 보석을 없애고 모든 보석을 시스템 차원에서 설치하는 것입니다.

추신 : [wkhtmltopdf][6]을 사용하는 동안 같은 문제가 발생했지만, wkhtmltopdf은 기본 패키지를 사용하도록 구성 설정을 제공합니다.

답변

0

분명히 승객이 PATH이 아니며, ENV['PATH']에있는 위치 만 bundler : /home/my_user/my_app/shared/bundle/ruby/2.3.0/bin에 추가되었습니다. Phusion passenger documentation도이 동작을 명시 적으로 명확히하지 않습니다. 이 지시어를 nginx.conf : passenger_env_var PATH $PATH;에 포함하여이 문제를 해결했습니다. 이렇게하면 기존 경로가 승객 프로세스로 전달됩니다.