2014-10-14 3 views
2

RHEL 6 시스템에 Rails 4 응용 프로그램이 설치되어 있습니다.Runnig ExecJS로 인해 프로덕션 서버에서 레이크 작업이 수행되지 않습니다.

생산에는 Passenger와 Apache2가 사용됩니다.

저는 최근 Rake 작업을 Whenever Gem과 Cron을 사용하여 예정된 작업으로 생산에 통합하려고했습니다.

rake aborted! 
ExecJS::RuntimeUnavailable: Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes. 

NodeJS가 컴퓨터에 설치되어 언급하는 것이 중요하다 :

나는이 레이크 작업 생산 한 실행하려고 할 때마다

, 나는 다음과 같은 오류가 발생합니다. 자산을 미리 컴파일 할 수 있습니다. 는 특히, 명령 node --version는 생산 : v0.10.31

여기 내 스택 추적입니다 :

rake aborted! 
    ExecJS::RuntimeUnavailable: Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes. 
    /var/www/eng_performance/shared/bundle/ruby/2.0.0/gems/execjs-2.2.1/lib/execjs/runtimes.rb:51:in `autodetect' 
    /var/www/eng_performance/shared/bundle/ruby/2.0.0/gems/execjs-2.2.1/lib/execjs.rb:5:in `<module:ExecJS>' 
    /var/www/eng_performance/shared/bundle/ruby/2.0.0/gems/execjs-2.2.1/lib/execjs.rb:4:in `<top (required)>' 
    /var/www/eng_performance/shared/bundle/ruby/2.0.0/gems/activesupport-4.0.4/lib/active_support/dependencies.rb:229:in `require' 
    /var/www/eng_performance/shared/bundle/ruby/2.0.0/gems/activesupport-4.0.4/lib/active_support/dependencies.rb:229:in `block in require' 
    /var/www/eng_performance/shared/bundle/ruby/2.0.0/gems/activesupport-4.0.4/lib/active_support/dependencies.rb:214:in `load_dependency' 
    /var/www/eng_performance/shared/bundle/ruby/2.0.0/gems/activesupport-4.0.4/lib/active_support/dependencies.rb:229:in `require' 
    /var/www/eng_performance/shared/bundle/ruby/2.0.0/gems/uglifier-2.5.3/lib/uglifier.rb:3:in `<top (required)>' 
    /home/deploy/.rvm/gems/ruby-2.0.0-p481/gems/bundler-1.7.2/lib/bundler/runtime.rb:76:in `require' 
    /home/deploy/.rvm/gems/ruby-2.0.0-p481/gems/bundler-1.7.2/lib/bundler/runtime.rb:76:in `block (2 levels) in require' 
    /home/deploy/.rvm/gems/ruby-2.0.0-p481/gems/bundler-1.7.2/lib/bundler/runtime.rb:72:in `each' 
    /home/deploy/.rvm/gems/ruby-2.0.0-p481/gems/bundler-1.7.2/lib/bundler/runtime.rb:72:in `block in require' 
    /home/deploy/.rvm/gems/ruby-2.0.0-p481/gems/bundler-1.7.2/lib/bundler/runtime.rb:61:in `each' 
    /home/deploy/.rvm/gems/ruby-2.0.0-p481/gems/bundler-1.7.2/lib/bundler/runtime.rb:61:in `require' 
    /home/deploy/.rvm/gems/ruby-2.0.0-p481/gems/bundler-1.7.2/lib/bundler.rb:133:in `require' 
    /var/www/eng_performance/releases/20141014084554/config/application.rb:7:in `<top (required)>' 
    /var/www/eng_performance/releases/20141014084554/Rakefile:4:in `require' 
    /var/www/eng_performance/releases/20141014084554/Rakefile:4:in `<top (required)>' 
    (See full trace by running task with --trace) 

참고 : 나는 소스로부터 컴파일로 NodeJS를 설치 한 나는 REPO에서 설치하려고 할 때 때문에 나는이 오류를 극복하는 방법을 몰랐다.

Packages skipped because of dependency problems: 
    c-ares19-1.9.1-5.el6.3.x86_64 from epel 
    http-parser-2.0-4.20121128gitcd01361.el6.x86_64 from epel 
    1:libuv-0.10.28-1.el6.x86_64 from epel 
    nodejs-0.10.30-1.el6.x86_64 from epel 
    1:v8-3.14.5.10-11.el6.x86_64 from epel 
+1

'gem'thebyracer '가 Gemfile에서 주석 처리가 해제되었는지 확인할 수 있습니까? –

+0

@RMilushev, 답장을 보내 주셔서 감사합니다. 내가 아는 한, 경호원을 사용하는 것은 성능 문제로 권장되지 않습니다. 다음과 같은 스레드가 두 개 이상 발견되었습니다. [rubyracer vs nodejs] (http://stackoverflow.com/q/14829275/3001256). 그 문제를 알고 있습니까? 이 보석의 새 버전 중 일부에 변경 사항이 있습니까? – cyber101

+1

필자의 제작 데비안 리눅스 서버에서'nodejs '에 대한 경험이 깁니다. 그것은 매우 특별한 방식으로 설치되어야하고 우리는'therabyracer' 보석에 의지하기로 결정했습니다. 성능 문제가 있다고 생각하지 않습니다. V8 js 머신 워퍼 (machine warper)이기 때문입니다. –

답변

4

글쎄, 마침내 나는 이것을 풀 수 있었다.

결국, node.js 설치에는 아무런 문제가 없었지만 참조 사항은 잘못되었습니다.

이것이 처음 변경된 이유는 알 수 없지만 following this post은 문제를 해결했습니다. 즉, ln -s /usr/local/bin/node /usr/bin/node이라는 심볼릭 링크를 추가하여 문제를 해결했습니다.

참고 : 저는 심볼릭 링크가 모범 사례가 아니라고 확신합니다. 다른 아이디어를 제안 할 수있는 사람이 있다면 ... 나는 그것을 듣고 싶습니다. ..

바라건대 이것은 node.js.에서 얻을 수있는 마지막 오류였습니다. 이와 같은 다른 오류가 발생할 경우, therabyracer는 훌륭한 백업 솔루션을 제공 할 것입니다.

관련 문제