为什么捆绑器在明显安装时不能找到rake?

时间:2016-08-24 13:51:13

标签: ruby rake bundler redmine bitnami

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

bundle exec rake db:migrate

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

enter image description here

我应该提到我根本没有做过任何定制,没有安装任何宝石,或者更改了ruby版本或做了任何事情。这是开箱即用的Redmine。

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

3 个答案:

答案 0 :(得分:1)

有两件事:

  • 通过gem list
  • 提供的红宝石宝石
  • ruby​​ gems availbale via bundler

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

总结:

  • $ bundle exec rake ...

要求在Gemfile中使用rake gem

  • $ rake ...

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

我希望它可以帮到你。

答案 1 :(得分:1)

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

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

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

cd *INSTALLDIR*
./use_redmine

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

答案 2 :(得分:0)

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

Bitnami提供的ruby之外的版本以某种方式安装在这台机器上以及另一个版本的bundler上。我做的第一件事是卸载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。我尝试运行$ bundle install Gemfile,但抱怨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升级了,我的用户和用户一样快乐。