Symfony2 + Capifony回滚错误

时间:2013-08-05 17:55:25

标签: symfony rollback capifony

我将Capifony配置为部署到我的远程服务器,当我部署项目时,我在capifony执行回滚操作后遇到一些错误。 但在capifony执行symfony:composer:dump_autoload操作后,它会使用新的发布路径转储chache和自动加载文件。在我运行symfony应用程序后,我收到错误:

PHP Warning: include(): Failed opening '/var/www/vhosts/user/app/releases/20130805162052/src/Rocket/ApplicationBundle/RocketApplicationBundle.php' for inclusion (include_path='/........') in /var/www/vhosts/user/app/shared/vendor/composer/ClassLoader.php on line 185

所以问题是:如果部署有任何错误,我将如何执行symfony:composer:dump_autoload

这样的事情:

after "deploy:rolling_back_action", "symfony:composer:dump_autoload"

任何人都可以帮助我吗?

修改

我尝试重新声明名称空间:deploy:update_code并更改on_rollback操作,在当前的部署会话中,如果我收到任何错误,此挂钩工作正常。但是当在on_rollback中执行symfony:composer:dump_autoload动作时,事件releas_path不是最新的,我不能重新声明......这是我的代码,当我尝试重新命名命名空间时:

namespace :deploy do
     task :update_code, :except => { :no_release => true } do
         on_rollback { my_namespace.rollback }
        strategy.deploy!
        finalize_update
     end
 end

 namespace :my_namespace do

  task :rollback, :except => { :no_release => true } do
        run "rm -rf #{release_path}; true" #default capistrano action on rollback

        #my custom actions
        #run "cd "+shared_path+"/../current"
        #run "php composer.phar dump-autoload"

        set :release_path, shared_path+"/../current"
        symfony.composer.dump_autoload
  end
 end

到目前为止,我已经找到了解决此问题的临时解决方案 - 每次部署后执行cap symfony:composer:dump_autoload更新路径并转储新的自动加载信息,但我不喜欢...

我可以通过重新声明命名空间或其他解决方案来了解真相吗?

1 个答案:

答案 0 :(得分:0)

如果使用以下内容发生错误,您可以继续执行任务:

namespace :symfony do 
    namespace :composer: do 
        task :dump_autoload, :on_error => :continue do 
             /* parent task */ 
        end
    end
end