Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我如何确保ruby gems安装在bundler执行的正确位置?_Ruby_Bundler_Rbenv - Fatal编程技术网

我如何确保ruby gems安装在bundler执行的正确位置?

我如何确保ruby gems安装在bundler执行的正确位置?,ruby,bundler,rbenv,Ruby,Bundler,Rbenv,我似乎总是在将gems放在正确的位置时遇到问题(并且在安装它们时不需要使用sudo) 为了解决sudo问题,我安装了rbenv,然后用它安装ruby 2.1.0,这样我就有了一个独立于Mac OSX系统的版本 然后我安装了bundler。但是当我使用bundler从Gemfile安装gems时,我找不到它们 在我所采取的所有步骤中,例如向我的.bash_配置文件添加行等,我有以下几点,但我真正想要的是一种清晰、直接的方式来管理gem及其本地执行: gem env: 编辑:我删除了所有内容并重置了

我似乎总是在将gems放在正确的位置时遇到问题(并且在安装它们时不需要使用
sudo

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

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

在我所采取的所有步骤中,例如向我的.bash_配置文件添加行等,我有以下几点,但我真正想要的是一种清晰、直接的方式来管理gem及其本地执行:

gem env

编辑:我删除了所有内容并重置了路径——仍然没有修复任何内容,但是您可以看到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$shotgun
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/Ruby/2.0.0/rubygems/dependency.rb:296:in
to_specs':在总共12个gem(gem::LoadError)中找不到“散弹枪”(>=0)

有人能告诉我OSX上ruby gem管理的简单、直接的directdions,以便:

  • 我不需要使用
    sudo
    来安装gems
  • 我可以使用bundler从给定项目的Gemfile安装
  • 这些gem及其可执行文件(shotgun、restclient、sass)可以直接执行
  • 我的本地环境基于这个在heroku建立的“正义工程”
  • 当我需要做一些事情时,我不需要键入
    bundle exec
另外,我还需要澄清是否需要始终使用bashshell(目前,我一直在使用
execbash
使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.
使用。它工作得很好,满足您的所有要求。我已经使用它两年了,没有任何问题。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
安装gems

关于你的外壳,这可能会引起问题。如果常规终端不工作,那么可能还有另一个问题

因为这个问题似乎与您的shell和路径有关,所以下面是我的.bash_配置文件

export PATH="$HOME/.rbenv/bin:$PATH"
export PATH=/usr/local/bin:$PATH
eval "$(rbenv init -)"
您可能希望尝试用上述内容替换.bash_配置文件,或者创建一个新用户,看看问题是否消失。

从头开始 除了简单的步骤外,您无需执行任何操作:

  • 不要使用sudo bundle…
  • 不要改变你的道路
  • 不要触摸任何
    ~/.文件

  • 在第一个应用程序文件的顶部复制
    需要“bundler/setup”

  • 请在所有Bundler管理的“二进制文件”前面使用bundle exec
使用开发人员工作站的良好默认设置,一切都可以正常工作。当您想更进一步,比如并排运行多个Rubies,或者部署到prod,或者厌倦了键入
bundle exec
(您应该使用
别名bex='bundle exec'
)然后,您可以键入
bundle install--binstubs
,然后安装一个RubyMonger(RBEnv,RVM)

根据你的具体情况 我会从头开始:

  • 卸载RBEnv(
    rm-rf~/.RBEnv
    并删除
    grep RBEnv~/.bashrc~/.bash_profile~/.zshrc/etc/profile/etc/profile.d/*
    )中提到的RBEnv)
  • 卸载捆绑程序

好的,谢谢——现在我的$PATH充满了各种各样的东西,因为我正努力让它工作。如何重置以及应将其设置为什么?我一直在手动分配Bundler和rubygems的配置路径,但不想这样做…..您是否仍然从
rbenv
执行以下操作:==>使用自制目录而不是~/.rbenv添加到您的配置文件:导出rbenv_ROOT=/usr/local/var/rbenv以启用垫片和自动完成添加到您的配置文件:如果是哪个rbenv>/dev/null;然后求值“$(rbenv init-”;fiHi,我仍然得到不同的安装和执行路径:我通过键入gem env:bash-3.2$restclient/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/Ruby/2.0.0/rubygems/dependency.rb:296:in‘to_specs’:在总共12个gem(gem::LoadError)中找不到‘rest client’(>=0),我会清理我的路径。请参阅我的最新答案。我认为您不需要
导出RBENV\u ROOT=/usr/local/var/RBENV
如果哪个RBENV>/dev/null;然后求值“$(rbenv init-”;fi
要“重置”路径,请在中删除与路径相关的任何内容。主目录中的文件。然后关闭终端并打开新终端。您可能需要此工具:
export PATH=/usr/local/bin:$PATH
。与任何工具一样,在需要使用RBEnv之前,不要安装它!Bundler会在您超越Stdlib后立即发挥作用。谢谢……因为这让我可以使用更少的工具进行操作,所以我现在采用您的方法,并选择它作为正确的答案,谢谢。我收到一个错误:
error:在执行gem时。。。(Gem::FilePermissionError)您没有/Library/Ruby/Gems/2.0.0目录的写入权限。
关于写入Gems的某些内容似乎总是希望写入我的库目录,但我不想在那里写入,因为我需要sudo。@Angela我们不能在这里讨论这个新问题。创建一个新问题来展示您的问题。