为什么 bundler 明明安装了 rake 却找不到?
Why can't bundler find rake when it's obviously installed?
我正在尝试将一个版本的 Redmine 从备份迁移到新服务器;我正在从 Redmine 3.2.3 迁移到 3.3.0。我在我的新服务器上安装了新版本的 Redmine(来自 Bitnami Stack)并且一切正常加载。当我将旧数据库移动到新版本时,我必须 运行
bundle exec rake db:migrate
迁移我的数据库。但是...即使 gem list
清楚地显示它已安装,捆绑程序也无法以某种方式找到 rake。我可以强制捆绑程序使用我安装的 rake 版本吗?
我应该提一下,我根本没有进行任何定制,没有安装任何 gem,也没有更改 ruby 版本或做任何事情。这是开箱即用的 Redmine。
我在提出问题后注意到我安装了两个版本的 rake。我删除了两个并重新安装了 rake 11.1.2 并遇到了同样的问题。
有两件事:
- ruby gem 可用
gem list
- ruby gem 通过捆绑器可用
当您使用 bundle
时,捆绑程序会从 Gemfile
中寻找 gem。您可以在系统中安装多个 gem,但是当您使用 Gemfile 时,gem 版本将从 Gemfile.lock
获取
总结:
$ bundle exec rake ...
需要在 Gemfile
中有 rake gem
$ rake ...
它将在系统中安装最新版本的 rake gem
希望对你有所帮助
您可能使用了错误的 ruby
二进制文件。请注意,Bitnami Stacks 的安装程序是完全独立的,运行 独立于系统上安装的其余软件或库。
此外,查看您分享的屏幕截图,您在执行 ruby -v
时使用的是 ruby 1.9.3,而 Redmine Bitnami Stacks 使用 ruby 2.1。 9.可能这就是您遇到问题的原因。
如果您想使用 Bitnami Stack 附带的 ruby(和其他组件),您需要 运行 以下命令:
cd *INSTALLDIR*
./use_redmine
此命令将打开一个新的控制台会话,其中的环境配置为使用堆栈。
这就是我最终升级 Redmine 的方式:
Bitnami 提供的版本之外的 ruby 版本以某种方式安装在这台机器上以及另一个版本的捆绑器。我做的第一件事是卸载 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 已升级,我的用户非常满意。
我正在尝试将一个版本的 Redmine 从备份迁移到新服务器;我正在从 Redmine 3.2.3 迁移到 3.3.0。我在我的新服务器上安装了新版本的 Redmine(来自 Bitnami Stack)并且一切正常加载。当我将旧数据库移动到新版本时,我必须 运行
bundle exec rake db:migrate
迁移我的数据库。但是...即使 gem list
清楚地显示它已安装,捆绑程序也无法以某种方式找到 rake。我可以强制捆绑程序使用我安装的 rake 版本吗?
我应该提一下,我根本没有进行任何定制,没有安装任何 gem,也没有更改 ruby 版本或做任何事情。这是开箱即用的 Redmine。
我在提出问题后注意到我安装了两个版本的 rake。我删除了两个并重新安装了 rake 11.1.2 并遇到了同样的问题。
有两件事:
- ruby gem 可用
gem list
- ruby gem 通过捆绑器可用
当您使用 bundle
时,捆绑程序会从 Gemfile
中寻找 gem。您可以在系统中安装多个 gem,但是当您使用 Gemfile 时,gem 版本将从 Gemfile.lock
总结:
$ bundle exec rake ...
需要在 Gemfile
中有 rake gem$ rake ...
它将在系统中安装最新版本的 rake gem
希望对你有所帮助
您可能使用了错误的 ruby
二进制文件。请注意,Bitnami Stacks 的安装程序是完全独立的,运行 独立于系统上安装的其余软件或库。
此外,查看您分享的屏幕截图,您在执行 ruby -v
时使用的是 ruby 1.9.3,而 Redmine Bitnami Stacks 使用 ruby 2.1。 9.可能这就是您遇到问题的原因。
如果您想使用 Bitnami Stack 附带的 ruby(和其他组件),您需要 运行 以下命令:
cd *INSTALLDIR*
./use_redmine
此命令将打开一个新的控制台会话,其中的环境配置为使用堆栈。
这就是我最终升级 Redmine 的方式:
Bitnami 提供的版本之外的 ruby 版本以某种方式安装在这台机器上以及另一个版本的捆绑器。我做的第一件事是卸载 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 已升级,我的用户非常满意。