我似乎经常遇到将宝石放在正确位置的问题(安装时不需要使用sudo
。)
为了解决sudo
问题,我安装了rbenv
,然后使用它来安装ruby 2.1.0,以便我从Mac OSX系统中单独安装一个。
然后我安装了bundler。但是当我使用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
以下是我想要跑步时发生的情况,比如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个宝石中找到'shotgun'(> = 0)(Gem :: LoadError)
有人能指出我在OSX上进行ruby gem管理的简单,直接的指导,以便:
sudo
来安装gems 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.
答案 0 :(得分: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
如果无效,请执行rbenv rehash
。
您永远不需要使用sudo
安装宝石。
关于你的shell,这可能会导致问题。如果常规终端不起作用,则可能存在另一个问题。
由于问题似乎与你的shell和PATH有关,这里是我的.bash_profile
export PATH="$HOME/.rbenv/bin:$PATH"
export PATH=/usr/local/bin:$PATH
eval "$(rbenv init -)"
您可能想尝试使用上述替换.bash_profile,或者创建新用户并查看问题是否消失。
答案 1 :(得分:0)
除了简单的步骤stated on the Bundler home page之外,您无需执行任何操作:
sudo bundle ...
请勿触摸任何~/.file
将require 'bundler/setup'
复制到第一个应用程序文件的顶部
使用开发人员工作站的漂亮默认值,一切正常。如果你想进一步运行多个Rubies并排或者部署到prod或者厌倦了输入bundle exec
(你应该使用bex
将其别名改为alias bex='bundle exec'
),那么你可以{ {3}},键入bundle install --binstubs
并安装其中一个Rubymongers(RBEnv,RVM)。
我会从头开始重启:
rm -rf ~/.rbenv
并删除grep rbenv ~/.bashrc ~/.bash_profile ~/.zshrc /etc/profile /etc/profile.d/*
中的rbenv提及)