rake文件中的未定义方法

时间:2016-03-11 08:59:17

标签: ruby symfony capistrano capistrano3

我收到错误

NoMethodError: undefined method `symfony_console' 

在rake文件中定义的任务中(lib / capistrano / tasks / my_tasks.rake)

task :migrate do
  on roles(:all) do
    symfony_console('doctrine:migrations:migrate', '--no-interaction')
  end
end
capistrano / symfony 扩展程序提供的

symfony_console 方法。 Capfile:

require 'capistrano/setup'
require 'capistrano/deploy'
require 'capistrano/composer'
require 'capistrano/symfony'

我做错了什么?

更新 问题可能与角色有关吗?

3 个答案:

答案 0 :(得分:2)

如果你给出了整个Capfile,那么你就错过了capistrano/symfony

像这样改变:

require 'capistrano/setup'
require 'capistrano/deploy'
require 'capistrano/composer'
require 'capistrano/symfony'

确保您已正确安装了宝石capistranocapistrano-symfony,否则请关注this step

我从未使用过此功能(symfony_console(...)),但它应该有效。

修改

您应该在deploy.rb

中写下您的任务

<强> EDIT2

如果您还没有,请尝试为您的任务设置名称空间,如下所示:

namespace :deploy do
  before 'updated', 'schemadb'
  task :migrate do
    on roles(:all) do
      symfony_console('doctrine:migrations:migrate', '--no-interaction')
    end
  end
end

如果它不起作用,请尝试将任务正文更改为:

on roles(:all) do
  invoke 'symfony:console', 'doctrine:migrations:migrate', '--no-interaction'
end

这就是我使用的。

答案 1 :(得分:1)

问题是由于旧版本的capistrano / symfony

答案 2 :(得分:0)

与capistrano-symfony版本1.0.0.rc3有同样的问题。

我绝对不是Ruby专家,但我很好奇如何调试这个...