2012-09-10 122 views
0

現在我必須承認,就這個部署百靈而言,我在黑暗中有點磕磕絆絆。我會盡我所能解釋最好的情況;我建立了一個測試部署服務器,並試圖將它的應用程序部署到capistrano上,但是,我遇到了一些困難,包括我的寶石及其依賴關係,就像鞋子下面的錯誤。通過capistrano(&rvm)部署套件時出現安裝錯誤

[mike-test] executing command 
[mike-test] rvm_path=$HOME/.rvm/ $HOME/.rvm/bin/rvm-shell '1.9.3' -c 'cd /home/deploy/myapp/releases/20120910081544 && bundle install --gemfile /home/deploy/myapp/releases/20120910081544/Gemfile --path /home/depoy/myapp/shared/bundle --deployment --quiet --without development test' 
** [out :: mike-test] Some gems seem to be missing from your vendor/cache directory. 
** [out :: mike-test] Could not find log4r-1.1.10 in any of the sources 
command finished in 9134ms 
*** [deploy:update_code] rolling back 

log4r是不是在我的Gemfile所以我只能假設它是另一種寶石的(只?也許生產)的依賴。我不知道爲什麼bundler不下載gem並安裝它,如果它找不到它?我把gem放在我的gemfile文件中,在本地運行bundle install,然後再次提交和部署,並得到相同的錯誤,但這次使用了不同的gem(電子表格),因此似乎只是解決了這種情況下的錯誤,確定問題。

其他東西要渾水,我試圖在生產服務器上使用RVM,儘管讀了很多關於它的信息,但我仍然不能100%確定它是如何工作的,所以這可能是一個因素。

deploy.rb

require "bundler/capistrano" 
require "rvm/capistrano" 

# SCM Settings 
set :rvm_ruby_string, '1.9.3' 
set :use_sudo, false 

ssh_options[:forward_agent] = true 
default_run_options[:pty] = true 

set :branch, :mikedev 
set :deploy_via, :remote_cache 
set :copy_cache, true 
set :git_enable_submodules, 0 
set :repository, "our_git_repo.git" 
set :scm, :git 
set :user, :deploy 
set :keep_releases, 1 

set :application, "myapp" 
set :deploy_to, "/home/deploy/myapp" 
set :branch, "mikedev" 

role :web, "mike-test"       
role :app, "mike-test"       
role :db, "mike-test", :primary => true  

namespace :deploy do 

    desc "Restarting mod_rails with restart.txt" 
    task :restart, :roles => :app, :except => { :no_release => true } do 
    run "touch #{current_path}/tmp/restart.txt" 
    end 

    [:start, :stop].each do |t| 
    desc "#{t} task is a no-op with mod_rails" 
    task t, :roles => :app do ; end 
    end 

end 

任何指導,將不勝感激。

回答

2

bundle install --deployment ...將不會下載任何寶石,如果vendor/cache存在。它會在那裏尋找寶石。有兩個選項:

  • 從VCS
  • 刪除vendor/cache目錄(即使它已經空)或運行bundle packagevendor/cache下的所有新文件添加到您的VCS

後者似乎是更好的選擇。這樣可以保護您的部署免受rubygems服務器的中斷。

+0

編輯 - nvm,現在測試。 –

+0

通過查看此頁http://rubygems.org/gems/paperclip/versions我看到3.0.0已被抽出。您必須將其更新到一些可用的兼容版本。 –

+0

是的,我的不好,就這個評論跳了一下槍。感謝您的幫助:),所有排序和答案接受! –

相關問題