【发布时间】:2013-02-06 11:48:00
【问题描述】:
我正在使用 Sunspot Solr,并且正在编写 Capistrano 任务来启动/停止它。
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 '1.9.3@project' -c 'cd /home/user/deploy/project/current && RAILS_ENV=staging bundle exec rake sunspot:solr:start'" on example.com
Sunspot 的 Java 检查代码是here。
如果我在服务器上手动运行cd /home/user/deploy/project/current && RAILS_ENV=staging bundle exec rake sunspot:solr:start,它会按预期工作。如果通过 Capistrano 调用命令,我不知道为什么 Java 不存在。
【问题讨论】:
-
您是否以同一用户身份手动运行命令并通过 capistrano 运行命令?
-
你检查#{rails_env} 是否正确。 “分期”?
-
@NikitaBeloglazov 是同一用户(抱歉回复晚了)
-
@Nishant 是的,它作为分期/生产是正确的
-
你知道java的路径是在哪里指定的吗?我通常将其添加到
.bashrc。我不知道 capistrano 是否读取.bashrc并从中加载PATH。检查this 问题:您可能需要在一些更具体的地方指定java 的路径。
标签: java ssh capistrano sunspot