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

标签 ruby bundler rbenv

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

为了解决 sudo 问题,我安装了 rbenv,然后用它来安装 ruby​​ 2.1.0,这样我就有了一个独立于 Mac OSX 系统的。

然后我安装了 bundler 。但是当我使用 bundler 从 Gemfile 安装 gems 时,我找不到它们。

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

gem 环境 :

编辑:我删除了所有内容并重置了 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

这是当我想运行时发生的事情,比如 shotgun:

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

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

  • 我不需要使用 sudo 来安装 gems
  • 我可以使用 bundler 从给定项目的 Gemfile 安装
  • 那些 gem 及其可执行文件(shotgun、restclient、sass)可以直接执行
  • 基于此设置的我的本地环境在 heroku 中“正常工作”?
  • 当我需要做一些事情时,我不需要输入 bundle exec

还澄清了我是否需要始终使用 bash shell(目前,我一直在使用 exec bash 让我的 shell 工作)。

编辑:按照以下步骤进行操作,并在 bundle 时获得此响应:

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.

最佳答案

使用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

当它没有按预期工作时,执行rbenv rehash

您永远不需要使用 sudo 安装 gem。

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

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

export PATH="$HOME/.rbenv/bin:$PATH"
export PATH=/usr/local/bin:$PATH
eval "$(rbenv init -)"

您可能想尝试用上面的内容替换您的 .bash_profile,或者创建一个新用户并查看问题是否消失。

关于ruby - 我如何确保 ruby​​ gem 安装在正确的位置以由 bundler 执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26575245/

相关文章:

ruby-on-rails - 如何在 Ruby 中将数组元素作为单独的方法参数传递?

ruby - Rails has_many 关系不使用 id

ruby-on-rails - Rails 3 打包器和 rvm : bundled gems don't show up in gem list?

ruby-on-rails - bundle 安装失败,错误为 : Bundler could not find compatible versions for gem "railties":

ruby-on-rails - 如何在没有 root 访问权限的情况下安装 Rails 和创建新应用程序?

ruby-on-rails - rbenv 在 mac 上安装在哪里?

ruby - 用于屏幕捕获的 Rails gem

ruby - 无法解析音频文件 track1.m4a

ruby-on-rails - rbenv:从 RVM 移动到 rbenv 后,在 Jenkins 执行 shell 中找不到命令

ruby - rbenv:多个 SAME ruby​​ 实例