gpt4 book ai didi

ruby-on-rails - 如果 Gemfile 中没有 Heroku gem,则无法从 Rake 任务中调用 heroku CLI

转载 作者:数据小太阳 更新时间:2023-10-29 06:59:10 25 4
gpt4 key购买 nike

我有一个应用程序在 Heroku 上运行了一段时间,在最近的部署中看到了 Heroku gem 被弃用的消息,有利于 Heroku Toolbelt。使用工具带,我的所有 Heroku 命令都可以在命令行中正常工作,但在 Rake 任务(我已为部署设置)中,我收到以下错误:

$ rake deploy:staging
Everything up-to-date

/Users/aramisbear/.rvm/gems/ruby-1.9.3-p194@myapp/gems/bundler-1.2.0/lib/bundler/rubygems_integration.rb:147:in `block in replace_gem': heroku is not part of the bundle. Add it to Gemfile. (Gem::LoadError)
from /Users/aramisbear/.rvm/gems/ruby-1.9.3-p194@myapp/bin/heroku:18:in `<main>'
from /Users/aramisbear/.rvm/gems/ruby-1.9.3-p194@myapp/bin/ruby_noexec_wrapper:14:in `eval'
from /Users/aramisbear/.rvm/gems/ruby-1.9.3-p194@myapp/bin/ruby_noexec_wrapper:14:in `<main>'

/Users/aramisbear/.rvm/gems/ruby-1.9.3-p194@myapp/gems/bundler-1.2.0/lib/bundler/rubygems_integration.rb:147:in `block in replace_gem': heroku is not part of the bundle. Add it to Gemfile. (Gem::LoadError)
from /Users/aramisbear/.rvm/gems/ruby-1.9.3-p194@myapp/bin/heroku:18:in `<main>'
from /Users/aramisbear/.rvm/gems/ruby-1.9.3-p194@myapp/bin/ruby_noexec_wrapper:14:in `eval'
from /Users/aramisbear/.rvm/gems/ruby-1.9.3-p194@myapp/bin/ruby_noexec_wrapper:14:in `<main>'

显示的错误来自此部署 rake 任务:

namespace :deploy do

desc "deploys to Production after uploading assets to S3"
task :production do
puts `git push heroku master`
puts `heroku run rake db:migrate --app myapp`
puts `heroku restart --app myapp`
end

desc "deploys to Staging after uploading assets to S3"
task :staging do
puts `git push staging staging:master`
puts `heroku run rake db:migrate --app myapp-staging`
puts `heroku restart --app myapp-staging`
end
end

每个任务中的两个 heroku 命令是问题的来源。如果我从命令行执行它们,它们工作得很好。我怀疑这是否重要,但我也在使用 RVM 运行 OSX。

知道如何解决这个问题吗?我意识到这没什么大不了的,因为我可以手动运行这些额外的命令或为它们添加别名,但我只想首先知道为什么会出现问题。

最佳答案

heroku 命令的 gem 版本在您的 PATH 中的优先级可能高于系统版本。

我能够在测试项目中重现这一点。

当我运行 which heroku 时,我看到 shell 的选择是 /home/justinf/.rvm/gems/ruby-1.9.3-p286/bin/heroku.

只需要一个简单的 gem uninstall heroku,回答 yes 即可删除可执行文件。

which heroku 现在给我 /usr/bin/heroku,我的 test.rb 现在完成时没有错误,而不是因捆绑程序异常而崩溃。

关于ruby-on-rails - 如果 Gemfile 中没有 Heroku gem,则无法从 Rake 任务中调用 heroku CLI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12966564/

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