我遇到Capistrano部署到具有RVM和gemsets的服务器的问题
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 '1.9.2@mygemset' -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, '1.9.2@mygemset'
set :rvm_type, :user
load 'deploy/assets'
当我以Capistrano使用的同一个用户身份登录时,执行失败的命令没有任何问题。
似乎Capistrano正在使用其他一些环境。
这是我的~/.rvmrc
文件:
rvm_gemset_create_on_use_flag=1 rvm_trust_rvmrcs_flag=1
有没有办法在执行时检查使用哪个ruby和gemset?
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/ruby-1.9.2-p290@mygemset"
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/ruby-1.9.2-p290@mygemset/bin/rake"
答案 0 :(得分:1)
在deploy.rb
中设置PATH解决了这个问题:
default_environment['PATH'] = "/usr/local/bin:/usr/bin:/bin:/opt/bin:$PATH"
这是一个Gentoo发行版,使用PATH
时cap deploy
var似乎是空的,所以我复制了服务器PATH
的内容,现在它可以正常工作
答案 1 :(得分:1)
当我在服务器上安装nodejs(使用apt-get)时,这个问题就消失了。正如我在this Stackoverflow answer中所说,这是最实用的选择,因为您不需要在Gemfile中包含任何依赖项。