2011-12-30 58 views
0

我有Capistrano的部署到服務器RVM和gemsetsCapistrano的找不到一個JavaScript運行

executing `deploy:assets:precompile' 
* executing "cd /var/app/releases/20111229233555 && rake RAILS_ENV=production RAILS_GROUPS=assets assets:precompile" 
*** [err ::] rake aborted! 
*** [err ::] Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes. 
*** [deploy:update_code] rolling back 
failed: "rvm_path=$HOME/.rvm/ $HOME/.rvm/bin/rvm-shell '[email protected]' -c 'cd /var/app/releases/20111229234715 && rake RAILS_ENV=production RAILS_GROUPS=assets assets:precompile'" 

一個問題這是我Capfile

$:.unshift(File.expand_path('./lib', ENV['rvm_path'])) 
    require 'rvm/capistrano' 
    set :rvm_bin_path, "$HOME/.rvm/bin" 
    set :rvm_ruby_string, '[email protected]' 
    set :rvm_type, :user 
    load 'deploy/assets' 

當我登錄的很Capistrano使用相同的用戶執行失敗的命令沒有任何問題。

看來卡皮斯特拉諾正在使用其他一些環境。

這裏是我的~/.rvmrc文件:

rvm_gemset_create_on_use_flag=1 rvm_trust_rvmrcs_flag=1 

有沒有辦法如何檢查哪些紅寶石和寶石在執行時使用?

的node.js是和V8安裝在系統上,並且所有需要的寶石是在Gemfile中:

這裏是我的rvm info

ruby: 
    interpreter: "ruby" 
    version:  "1.9.2p290" 
    date:   "2011-07-09" 
    platform:  "x86_64-linux" 
    patchlevel: "2011-07-09 revision 32553" 
    full_version: "ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-linux]" 

    homes: 
    gem:   "/home/capistrano/.rvm/gems/[email protected]" 
    ruby:   "/home/capistrano/.rvm/rubies/ruby-1.9.2-p290" 

    binaries: 
    ruby:   "/home/capistrano/.rvm/rubies/ruby-1.9.2-p290/bin/ruby" 
    irb:   "/home/capistrano/.rvm/rubies/ruby-1.9.2-p290/bin/irb" 
    gem:   "/home/capistrano/.rvm/rubies/ruby-1.9.2-p290/bin/gem" 
    rake:   "/home/capistrano/.rvm/gems/[email protected]/bin/rake" 
+0

這些問題通常與不由capistrano設置的PATH變量有關。考慮將PATH =「/ path/to/v8:$ PATH」前綴添加到您的rake命令的開頭以進行調試。 – 2011-12-30 02:10:03

+0

execjs可能正在尋找一個'node'二進制文件。感謝您指點我正確的方向! – Tombart 2011-12-30 09:11:34

+0

在** Windows **上開發的用戶應該[閱讀本文](https://gist.github.com/3326247)我寫了關於Capistrano和'找不到JavaScript運行時'的信息。希望這會爲你節省很多時間。 – user909481 2012-08-24 18:16:33

回答

1

建立在解決這一問題上的deploy.rb PATH:

default_environment['PATH'] = "/usr/local/bin:/usr/bin:/bin:/opt/bin:$PATH" 

這是一個Gentoo發行和PATH變種似乎使用cap deploy的時候是空的,所以我複製了服務器PATH的內容,現在它工作了

1

當我在我的服務器上安裝nodejs(使用apt-get)時,此問題不適用。正如我在this Stackoverflow answer中所述,這是最實際的選擇,因爲您不需要在Gemfile中包含任何依賴關係。