【问题标题】:Bundler could not find compatible versions for gem "bundler" using whenever and rake tasksBundler 找不到 gem “bundle” 的兼容版本,使用时和 rake 任务
【发布时间】:2015-03-30 12:58:08
【问题描述】:

我正在使用 cron 作业运行 rake 任务,但它给出错误 Bundler 找不到 gem "bundler" 的兼容版本: 代码示例如下

schedule.rb

set :output, {:error => "log/cron_error_log.log", :standard => "log/cron_log.log"}

every 1.minute do
  rake "twitter:search"
end

/lib/tasks/twitter.rake

namespace :twitter do
  desc "Search tweets for user"
  task :search => :environment do

    puts "searching for all users ......."
    # my original code 

  end
end

当我使用以下命令运行我的 rake 任务时

whenever --update-crontab
crontab -l

它运行成功,但是当我看到日志文件 log/cron_log.log 我每 1 分钟后出现以下错误

Bundler could not find compatible versions for gem "bundler":
  In Gemfile:
    rails (= 4.1.1) depends on
      bundler (< 2.0, >= 1.3.0)

  Current Bundler version:
    bundler (1.0.15)

注意 => 当我在终端中运行 rake twitter:search 时,它运行成功
感谢您阅读帖子并非常感谢您的建议

【问题讨论】:

  • 试试bundle exec whenever --update-crontab
  • @dddd1919 错误依旧....谢谢回复
  • 如果有Gemfile,先运行bundle install

标签: ruby-on-rails bundler rake-task whenever


【解决方案1】:

错误提示您安装了错误版本的捆绑程序。

rails (= 4.1.1) depends on bundler (&lt; 2.0, &gt;= 1.3.0)

Bundler gem 版本必须小于2.0 但大于或等于1.3.0

Current Bundler version: bundler (1.0.15)

捆绑器的安装版本为1.0.15(小于2.0,但不大于或等于1.3.0

TL;DR安装正确版本的捆绑器

$ gem install bundler --version '&lt;2.0, &gt;= 1.3.0'

【讨论】:

  • @Danial 我已经安装了$ gem install bundler --version '&lt;2.0, &gt;= 1.3.0',但是当我运行我的 cronjob 时仍然出现同样的错误,它只会在 cronjobs 中给我错误...
  • @HaiderAli 如果是这种情况,那么您需要调试您的 cron ENV 以获取更多信息。尝试添加运行 echo $(which bundler) &gt; ~/bundler_location 的 cron 脚本,并将其与不在 cron 中的 echo $(which bundler) 的输出进行比较。您可能正在使用不同版本的 bundler(或者可能是 rake。您也应该尝试一下)
  • 使用“echo”任务时出现新错误。 >> ruby​​gems/core_ext/kernel_require.rb:54:in `require': 无法加载这样的文件 -- bundler/setup (LoadError)。尽管能够在控制台中无错误地获取版本、更新 bunder 等。现在将 gem 转换为带有工作说明的东西。
猜你喜欢
  • 2014-03-14
  • 2012-04-08
  • 2019-12-01
  • 1970-01-01
  • 2011-10-31
  • 1970-01-01
  • 2017-07-17
  • 2018-02-09
  • 2014-05-26
相关资源
最近更新 更多