【问题标题】:Why can't bundler find rake when it's obviously installed?为什么 bundler 明显安装了 rake 却找不到?
【发布时间】:2016-12-31 16:49:18
【问题描述】:

我正在尝试将 Redmine 版本从备份迁移到新服务器;我正在从 Redmine 3.2.3 迁移到 3.3.0。我在我的新服务器上安装了新版本的 Redmine(来自 Bitnami Stack),一切正常加载。当我将旧数据库移动到新版本时,我必须运行

bundle exec rake db:migrate

迁移我的数据库。但是......即使gem list 显示它已明确安装,bundler 也无法以某种方式找到 rake。我可以强制 bundler 使用我安装但它说我没有安装的 rake 版本吗?

我应该提到我根本没有进行任何自定义,没有安装任何 gem,或者更改 ruby​​ 版本或做任何事情。这是开箱即用的Redmine。

在我提出问题后我注意到我安装了两个版本的 rake。我删除了两者并重新安装了 rake 11.1.2 并遇到了同样的问题。

【问题讨论】:

  • 你能运行bundle list吗?你有抽成吗?
  • 我无法运行bundle 任何东西。我可能已经想通了(Ruby 版本/位置)......我必须在这台服务器上做更多的事情来测试,如果它有效,我会回答

标签: ruby rake bundler redmine bitnami


【解决方案1】:

这就是我最终升级我的 Redmine 的方式:

Bitnami 提供的版本之外的 ruby​​ 版本不知何故安装在这台机器上以及另一个版本的 bundler 上。我做的第一件事是卸载捆绑器的apt-get 版本。我必须手动删除 /usr/bin/bundler/usr/bin/bundle$ which bundle 才能在删除后停止查找捆绑程序。

我看到 Bitnami 堆栈的 ruby​​ 版本是 2.1.x,但发现 Ruby 1.9.3 安装到 /usr/bin/ruby1.9.3/$ which ruby。我拿了the commands from here 并删除了那个版本的Ruby。

运行 $ ruby -v 现在什么也没给我,因为不再安装 Ruby(即使它在 Bitnami 堆栈中)。然后必须(重新?)将 Bitnami 的 Ruby 添加到我在~/.profile 的路径中。 $ ruby -v 现在给了我正确的版本。

$ gem list 不再告诉我安装了 rake。我尝试在Gemfile 所在的位置运行$ bundle install,但抱怨mime-types 被锁定在较低版本并且不会做任何事情。我用$ bundle update 解决了这个问题,但后来遇到了臭名昭著的nokogiri 问题,它抱怨nokogiri 所需的所有东西都没有安装。

因为我之前(很多次)处理过这个问题,所以我去了the Nokogiri Website's install page 并按照说明在 Ubuntu 上进行故障排除:

sudo apt-get install build-essential patch
sudo apt-get install ruby-dev zlib1g-dev liblzma-dev

现在$ bundle update 为我的Gemfile 工作。 Redmine 升级了,我的用户非常满意。

【讨论】:

    【解决方案2】:

    您可能使用了错误的ruby 二进制文件。请注意,Bitnami Stacks 的安装程序是完全独立的,独立于您系统上安装的其他软件或库运行。

    另外,看看您分享的屏幕截图,您在执行ruby -v 时使用的是 ruby​​ 1.9.3,而 Redmine Bitnami Stacks 使用的是 ruby​​ 2.1.9。可能这就是您遇到问题的原因。

    如果您想使用 Bitnami Stack 附带的 ruby​​(和其他组件),您需要运行以下命令:

    cd *INSTALLDIR*
    ./use_redmine
    

    此命令将打开一个新的控制台会话,其中环境配置为使用堆栈。

    【讨论】:

    • 我不知道这个./use_redmine 是什么,但你的回答基本上就是问题所在。我将用我必须做的完整描述来回答,但我会标记你的,因为它在技术上是正确的。
    【解决方案3】:

    有两件事:

    • 可通过gem list获得红宝石宝石
    • ruby gems 可通过 bundler 获得

    当您使用 bundle 时,bundler 正在从 Gemfile 寻找 gem。您可以在系统中安装多个 gem,但是当您使用 Gemfile 时,gem 版本将从Gemfile.lock获取

    总结:

    • $ bundle exec rake ...

    需要在 Gemfile 中包含 rake gem

    • $ rake ...

    它将采用系统中安装的最新版本的 rake gem

    希望对你有帮助。

    【讨论】:

    • rake gem 位于 Gemfile 中。它一直说找不到。
    猜你喜欢
    • 1970-01-01
    • 2014-06-28
    • 1970-01-01
    • 2011-03-18
    • 2021-07-25
    • 2021-10-11
    • 2014-02-02
    • 1970-01-01
    • 2021-03-26
    相关资源
    最近更新 更多