Rake在我的Gem路径中然而Bundler找不到它

时间:2016-07-20 18:11:19

标签: ruby-on-rails ruby rake bundler

Bundler找不到Rake。

如何修复我的Gem路径,以便我的Ruby宝石安装在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/

Rake在那里:

   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

Rake 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。

我试图避免使用"捆绑exec"。

我无法工作。

我只需要让系统使用一条路径。版本不是很重要。

如何在一条路径上达成一致意见?

如果我运行"捆绑安装"然后在输出中我看到"使用rake 11.2.2"。所以"捆绑"当Bundler正在进行"安装"任务,但不是在它执行" exec"任务。

顺便说一下:

  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。

然后我在终端窗口中重新开始,以确保所有更改都已加载。

现在,如果我运行"捆绑安装"宝石似乎安装到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

2 个答案:

答案 0 :(得分:0)

我想现在已经修好了。删除所有.bashrc和.bash_profile和.zshrc并将默认shell更改回bash并删除rvm的所有提及并重新安装rbenv并重新安装" gem"然后" Bundler"似乎至少解决了一些路径问题。我通过做" gem install paperclip"修复了Paperclip的问题。我想全局安装了paperclip,但至少它可以在我的本地Mac上运行。非常脆弱,但事情正在发挥作用。

我希望我能在这个项目中使用Clojure。每当我和Ruby纠缠在一起时,我最终都会遇到这种无尽的迷路问题。有了Clojure,我受到Leiningen的保护,Leiningen似乎用纯粹的魔法来解决这个问题。

答案 1 :(得分:0)

我刚刚运行gem update bundler来解决此问题。