如何在Heroku上运行带参数且指定对应应用的rake任务?
解决方案
可以在Heroku上正常运行带参数的rake任务,你遇到的问题是Heroku CLI的参数归属规则和调用方式不对导致的:
- Heroku CLI会把
--分隔符之后的所有参数直接透传给远端执行的命令,不会识别成CLI本身的参数,因此指定应用的-a参数必须放在--之前 - 新版Heroku CLI执行远端任务需要加
run关键字,直接使用heroku rake的调用方式已经废弃,无法正确解析后续参数
正确执行命令
方式1:透传参数形式(和本地调用格式一致)
适配新版Heroku CLI,和你本地的调用写法兼容:
heroku run -a myherokuapp rake query:process -- -d true -c false
如果是使用旧版支持heroku rake直接调用的CLI版本,对应正确写法为:
heroku rake -a myherokuapp query:process -- -d true -c false
方式2:Rake原生参数形式(可选)
如果你的rake任务是按Rake标准参数规则定义的,示例代码如下:
task :process, [:d, :c] do |t, args| # 任务逻辑 end
可以直接用方括号传递参数,写法更简洁:
heroku run -a myherokuapp rake query:process[true,false]
内容的提问来源于stack exchange,提问作者sscirrus
相关产品推荐
相关产品推荐

