gpt4 book ai didi

ruby-on-rails - 无方法错误 : undefined method `within' for main:Object

转载 作者:数据小太阳 更新时间:2023-10-29 08:43:49 24 4
gpt4 key购买 nike

我正在尝试让 Capistrano 部署脚本。

在我的 Capfile 中,我确保包含所有 rake 任务

# Load tasks
Dir.glob('config/capistrano_tasks/*.rake').each { |r| import r }

接下来我有一个“migrations.rake”包含:

namespace :fileservice do
task :migrate do
within release_path do
info 'Doing migrations'

execute :php, fetch(:symfony_console_path), 'doctrine:migrations:migrate', '--no-interaction', fetch(:symfony_console_flags)
end
end
end

在我的 deploy.rb 中,我在最后调用任务:

after 'deploy:publishing', 'fileservice:migrate'

出于某种原因,我不断收到一条错误消息:

NoMethodError: undefined method `within' for main:Object

我不知道去哪里查看或可能出了什么问题......当谷歌搜索时,我得到了很多“NoMethodError”命中,但没有关于“within”方法的命中,而且大多数是一般的 Ruby 错误。

应该在哪里定义“within”?我在 Rails 上找到了 ruby ?还是 Capistrano?

希望有人知道从哪里开始寻找或包含哪个库/脚本!

更新:我刚刚发现这些方法都行不通。删除行时,“信息”和“执行”出现相同的错误......所以我猜某处缺少某些东西......

最佳答案

您需要告诉 Capistrano 在哪里(即在什么服务器上)运行您的 SSH 命令。使用 on block 执行此操作,如下所示:

namespace :fileservice do
task :migrate do
on roles(:db) do
within release_path do
info 'Doing migrations'
execute :php, fetch(:symfony_console_path), 'doctrine:migrations:migrate', '--no-interaction', fetch(:symfony_console_flags)
end
end
end
end

根据您希望命令运行的位置,根据您的任务替换 roles(:db)。例如,表达式 on roles(:all) do ... end 将在所有服务器上运行命令。


您也可以在 http://capistranorb.com 上查看官方文档。 ,或 Capistrano README ,它们都显示了 task/on/execute 语法的示例。

关于ruby-on-rails - 无方法错误 : undefined method `within' for main:Object,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38613304/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com