2013-02-21 17 views
0

我正在使用太陽黑子Solr,我正在寫一個Capistrano任務來啓動/停止它。Capistrano首發太陽黑子沒有找到Java

namespace :sunspot do 
    task :start, :roles => :app do 
     run "cd #{current_path} && RAILS_ENV=#{rails_env} bundle exec rake sunspot:solr:start" 
    end 
    end 

然而,當我運行這個任務,我得到找不到的Java錯誤:

*** [err :: example.com] /home/user/deploy/project/shared/bundle/ruby/1.9.1/gems/sunspot_solr-1.3.3/lib/sunspot/solr/java.rb:5:in ``': No such file or directory - java -version (Errno::ENOENT) 
*** [err :: example.com] from /home/user/deploy/project/shared/bundle/ruby/1.9.1/gems/sunspot_solr-1.3.3/lib/sunspot/solr/java.rb:5:in `installed?' 
*** [err :: example.com] from /home/user/deploy/project/shared/bundle/ruby/1.9.1/gems/sunspot_solr-1.3.3/lib/sunspot/solr/server.rb:200:in `ensure_java_installed' 
*** [err :: example.com] from /home/user/deploy/project/shared/bundle/ruby/1.9.1/gems/sunspot_solr-1.3.3/lib/sunspot/solr/server.rb:27:in `initialize' 
*** [err :: example.com] from /home/user/deploy/project/shared/bundle/ruby/1.9.1/gems/sunspot_solr-1.3.3/bin/sunspot-solr:16:in `new' 
*** [err :: example.com] from /home/user/deploy/project/shared/bundle/ruby/1.9.1/gems/sunspot_solr-1.3.3/bin/sunspot-solr:16:in `<top (required)>' 
*** [err :: example.com] from /home/user/deploy/project/shared/bundle/ruby/1.9.1/bin/sunspot-solr:23:in `load' 
*** [err :: example.com] from /home/user/deploy/project/shared/bundle/ruby/1.9.1/bin/sunspot-solr:23:in `<main>' 
failed: "rvm_path=$HOME/.rvm/ $HOME/.rvm/bin/rvm-shell '[email protected]' -c 'cd /home/user/deploy/project/current && RAILS_ENV=staging bundle exec rake sunspot:solr:start'" on example.com 

太陽黑子的Java校驗碼是here

如果我在服務器上手動運行cd /home/user/deploy/project/current && RAILS_ENV=staging bundle exec rake sunspot:solr:start,它將按預期工作。我不知道如果通過Capistrano調用該命令,爲什麼Java不存在。

+0

你是否以同樣的用戶手動運行命令並通過capistrano? – 2013-02-21 08:42:48

+0

您是否檢查#{rails_env}是否正確。 '分期'? – Nishant 2013-02-27 12:13:11

+0

@NikitaBeloglazov是同一個用戶(對不起,遲了回覆) – lulalala 2013-03-01 08:14:46

回答

0

在我的服務器上,Java路徑加載在`/ etc/profile'腳本中。

但是Capistrano不加載該腳本。

根據this discussion,在Capistrano deploy.rb文件中設置此項將確保其shell會加載配置文件腳本,該腳本將爲我設置Java路徑。

default_run_options[:shell] = '/bin/bash --login'