2014-07-09 20 views
0

我嘗試使用shared_pa​​th這樣的設置命令地圖:訪問shared_pa​​th在deploy.rb

SSHKit.config.command_map[:composer] = "php #{shared_path.join('composer.phar')}" 

但路徑是/ var/WWW/XXX沒有使用我設置的路徑:deploy_to部署/升級.RB。

我想這是因爲staging.rb加載後。

那麼正確的方法是什麼?

+0

在Capistrano 2中,我通過使用延遲變量[set(name,&block)]解決了這個問題(https://github.com/capistrano/capistrano/wiki/2.x-DSL-Configuration-Variables-Set #block),但我認爲這個自定義DSL已在Capistrano 3中刪除。 任何人都知道什麼是替代? – GiDo

+0

您現在可以使用抓取。但不知道它將適用於command_map – gagarine

回答

0

我有同樣的問題,雖然我不認爲我找到了最好的辦法。我找到了一種方法。

我的默認值:deploy.rb中的deploy_to指向'/ var/www/my_app'。我有一個開發階段,服務器使用相同的路徑。但我的生產服務器使用'/ home/httpd/something/else',所以我把:deploy_to放在production.rb中,希望它部署到那個路徑。除了作曲家的命令,一切都可以使用。 composer.phar文件被下載到正確的共享路徑,並正確部署文件。但是當作曲者運行時,它會嘗試在'/ var/www/my_app/shared'中找到它。

我所做的是將自己放在deploy.rb中的SSHKit.config.command_map,而不是將它放在任務中。就像:

namespace :deploy do 

    before :starting, :map_composer_command do 
     on roles(:app) do |server| 
      SSHKit.config.command_map[:composer] = "#{shared_path.join("composer.phar")}" 
     end 
    end 

    ... 
end 

感覺就像SSHKit.config.command_map運行「到早」或什麼。這似乎有幫助。它至少適用於我。我有完全相同的問題。

編輯: 我從capistrano/composer上發佈的問題得到了一些幫助。