我正在尝试将Redmine版本从备份迁移到新服务器;我正在从Redmine 3.2.3迁移到3.3.0。我在我的新服务器上安装了新版本的Redmine(来自Bitnami Stack),所有内容都正确加载。当我将旧数据库移动到新版本时,我必须运行
bundle exec rake db:migrate
迁移我的数据库。但是......即使gem list
显示明确安装,捆绑器也无法以某种方式找到rake。我可以强制捆绑商使用我已安装的rake版本吗?它说我没有?
我应该提到我根本没有做过任何定制,没有安装任何宝石,或者更改了ruby版本或做了任何事情。这是开箱即用的Redmine。
在我提出问题后我注意到我安装了两个版本的rake。我删除了两个并重新安装了rake 11.1.2并遇到了同样的问题。
答案 0 :(得分:1)
有两件事:
gem list
当您使用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升级了,我的用户和用户一样快乐。