【发布时间】:2016-11-24 01:55:55
【问题描述】:
Bundler 找不到 Rake。
如何修复我的 Gem 路径,以便将我的 Ruby gem 安装在 Bundler 可以找到的位置?
如果我这样做:
gem env
我明白了:
RubyGems Environment:
- RUBYGEMS VERSION: 2.0.14
- RUBY VERSION: 2.0.0 (2015-04-13 patchlevel 645) [universal.x86_64-darwin15]
- INSTALLATION DIRECTORY: /Library/Ruby/Gems/2.0.0
- RUBY EXECUTABLE: /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby
- EXECUTABLE DIRECTORY: /usr/local/bin
- RUBYGEMS PLATFORMS:
- ruby
- universal-darwin-15
- GEM PATHS:
- /Library/Ruby/Gems/2.0.0
- /Users/lkrubner/.gem/ruby/2.0.0
- /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/gems/2.0.0
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :backtrace => false
- :bulk_threshold => 1000
- "install" => "--no-ri --no-rdoc"
- "update" => "--no-ri --no-rdoc"
- REMOTE SOURCES:
- https://rubygems.org/
还有瑞克在那儿:
ls -al /Library/Ruby/Gems/2.0.0/gems
rake-0.9.6
rake-10.4.2
rake-11.2.2
rdoc-4.0.0
test-unit-2.0.0.0
但是对于当前的项目,这些都不重要。
我正在从另一个开发人员那里接手一个 Rails 项目。
Rails 4.2
耙 11..2.2
Ruby 2.0.0
如果我进去
.bundler/config
我明白了:
BUNDLE_PATH: vendor/cache
BUNDLE_DISABLE_SHARED_GEMS: '1'
如果我使用“查找”,我可以看到我已经安装了多个版本的 Rake:
vendor/cache/rake-11.2.2.gem
vendor/cache/ruby/2.1.0/gems/rake-10.5.0/
vendor/cache/ruby/2.1.0/gems/rake-11.2.2
vendor/cache/ruby/2.1.0/gems/rake-10.4.2
但其中大部分将进入 ruby 2.1 文件夹,而不是 2.0。
但如果我尝试:
bundle exec rake db:setup
我明白了:
Could not find rake-11.2.2 in any of the sources
我尝试过“捆绑安装”。
我已经尝试删除 Gemfile.lock。
我试图避免使用“bundle exec”。
我什么都做不了。
我只需要让系统使用一个路径。版本不是很重要。
如何让所有内容都在一条路径上达成一致?
如果我运行“捆绑安装”,那么在输出中我会看到“使用 rake 11.2.2”。因此,当 Bundler 执行“安装”任务时,“捆绑”命令会看到 rake,但在执行“执行”任务时不会。
顺便说一句:
which rake
/usr/local/bin/rake
这是硬编码到 Ruby 2.0 版本的:
#!/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby
#
# This file was generated by RubyGems.
#
# The application 'rake' is installed as part of a gem, and
# this file is here to facilitate running it.
#
require 'rubygems'
version = ">= 0"
if ARGV.first
str = ARGV.first
str = str.dup.force_encoding("BINARY") if str.respond_to? :force_encoding
if str =~ /\A_(.*)_\z/
version = $1
ARGV.shift
end
end
gem 'rake', version
load Gem.bin_path('rake', 'rake', version)
[[更新]]
[[更新]]
我删除了:
.bashrc
.bash_profile
.zshrc
然后我跑了:
chsh -s /bin/bash
我在 Mac 上。这应该将我的 shell 从 zsh 更改为 bash。
然后我在终端窗口中重新开始,以确保所有更改都已加载。
现在,如果我运行“捆绑安装”,gems 似乎会安装到 vendor/cache/ 但我收到此错误:
Installing paperclip 5.0.0
Gem::InstallError: paperclip requires Ruby version >= 2.1.0.
所以我跑了:
rbenv install 2.1.0
然后我再次运行“捆绑安装”,我得到了同样的错误。
红宝石版本是:
ruby -v
ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-darwin15]
有什么建议吗?
如果我跑:
gem env
我明白了:
- GEM PATHS:
- /Users/lkrubner/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0
- /Users/lkrubner/.gem/ruby/2.3.0
【问题讨论】:
-
gem 'rake'是否包含在您的Gemfile中? -
试试
bundle exec gem list | grep rake看看您是否安装了多个版本以及这些版本的列出顺序。然后你使用gem uninstall rake并选择你想要删除的版本,直到你只有正确的版本。 -
@Holger -- 我已经尝试了 3 种方法:在 Gemfile 中没有“rake”,在 Gemfile 中使用它但没有指定版本,以及使用它并指定版本。没有任何效果。
-
@jaydel -- 如果我运行“bundle exec gem list”,我只会收到错误消息:“在任何来源中都找不到 rake-11.2.2”
-
如果我运行“捆绑安装”,那么在输出中我会看到“使用 rake 11.2.2”。因此,当 Bundler 执行“安装”任务时,“捆绑”命令会看到 rake,但在执行“执行”任务时不会看到。
标签: ruby-on-rails ruby rake bundler