如何确保ruby gem安装在正确的位置以便由bundler执行?

Tim*_* T. 3 ruby bundler rbenv

我似乎经常遇到将宝石放在正确位置的问题(sudo安装时不需要使用它们.)

为了解决这个sudo问题,我安装了rbenv然后使用它来安装ruby 2.1.0,以便我从Mac OSX系统中单独安装一个.

然后我安装了捆绑器.但是当我使用Bundler从Gemfile安装gem时,我找不到它们.

在我采取的所有步骤之间,例如向.bash_profile添加行等等,我有以下内容,但实际上只是想要一种清晰,直接的方式来管理宝石及其本地执行:

gem env :

编辑:我删除了所有内容并重置PATH - 仍然没有修复任何东西,但你可以看到gems安装在一个目录中但是当我调用可执行文件时,找不到命令:

 RubyGems Environment:
  - RUBYGEMS VERSION: 2.0.14
  - RUBY VERSION: 2.0.0 (2014-02-24 patchlevel 451) [universal.x86_64-darwin13]
  - INSTALLATION DIRECTORY: /Library/Ruby/Gems/2.0.0
  - RUBY EXECUTABLE: /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby
  - EXECUTABLE DIRECTORY: /usr/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - universal-darwin-13
  - GEM PATHS:
     - /Library/Ruby/Gems/2.0.0
     - /Users/fongster/.gem/ruby/2.0.0
     - /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/gems/2.0.0
Run Code Online (Sandbox Code Playgroud)

以下是我想要跑步的时候,说shotgun:

bash-3.2$ shotgun /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/dependency.rb:296:into_specs':找不到12个宝石中的'shotgun'(> = 0)(Gem :: LoadError)

有人能指出我在OSX上进行ruby gem管理的简单,直接的指导,以便:

  • 我不需要sudo用来安装宝石
  • 我可以使用bundler从Gemfile安装给定项目
  • 那些宝石及其可执行文件(霰弹枪,restclient,sass)可以被执行
  • 基于此设置的本地环境在heroku中设置"正常工作"?
  • bundle exec需要做什么时我不需要打字

还有一些清晰的说明我是否需要总是去一个bash shell(目前,我一直在使用exec bash我的shell工作).

编辑:按照以下步骤,并在捆绑时得到此响应:

Errno::EEXIST: File exists @ dir_s_mkdir - /Users/fongster/.rbenv/shims/gem
An error occurred while installing backports (3.6.3), and Bundler cannot
continue.
Make sure that `gem install backports -v '3.6.3'` succeeds before bundling.
Run Code Online (Sandbox Code Playgroud)

B S*_*ven 8

使用rbenv-gemset.它工作得很好,满足您的所有要求.我已经使用它2年了,没有任何问题.Heroku没有问题.

这是我设置新Ruby项目的过程:

1. Create directory (or Rails app in new directory)
2. cd directory
3. Set ruby version: Use 2.1.0 or another version 
   rbenv local 2.1.0
4. Set gemset: replace app-name with the name of the app
   echo app-name > .rbenv-gemsets
5. Check gemset. Should be app-name global:
   rbenv gemset active
6. rbenv rehash
7. Create Gemfile
8. gem install bundler
9. bundle
Run Code Online (Sandbox Code Playgroud)

当它没有按预期工作时,做rbenv rehash.

您永远不需要使用安装宝石sudo.

关于你的shell,这可能会导致问题.如果常规终端不起作用,则可能存在另一个问题.

由于问题似乎与你的shell和PATH有关,这里是我的.bash_profile

export PATH="$HOME/.rbenv/bin:$PATH"
export PATH=/usr/local/bin:$PATH
eval "$(rbenv init -)"
Run Code Online (Sandbox Code Playgroud)

您可能希望尝试使用上述替换.bash_profile,或者创建新用户并查看问题是否消失.