Ruby on rails 在任何来源中都找不到nokogiri-1.6.7.1

Ruby on rails 在任何来源中都找不到nokogiri-1.6.7.1,ruby-on-rails,ruby,nokogiri,Ruby On Rails,Ruby,Nokogiri,所以我是一个新手(嘿,至少我发现堆栈溢出是对的?),我正在使用Michael Hartl的Ruby on Rails Tut。第三章有我的意见: sudo rails generate controller StaticPages home help 我回来了: Could not find nokogiri-1.6.7.1 in any of the sources Run `bundle install` to install missing gems. 当我看到bundle安装程序时,

所以我是一个新手(嘿,至少我发现堆栈溢出是对的?),我正在使用Michael Hartl的Ruby on Rails Tut。第三章有我的意见:

sudo rails generate controller StaticPages home help
我回来了:

Could not find nokogiri-1.6.7.1 in any of the sources
Run `bundle install` to install missing gems.
当我看到bundle安装程序时,它肯定会列出nokogiri 1.6.7.1 当我输入时:

bundle show nokogiri
我得到:

/Users/user/.rvm/gems/ruby-2.2.3@rails3tutorial2ndEd/gems/nokogiri-1.6.7.1
我在MacBookPro os x el capitan V10.11.1上使用rails V4.2.5


非常感谢您的帮助。也许我可以在一两年后再付

尝试在不使用
sudo
的情况下运行该命令。由于
sudo
以root用户身份运行该命令,因此它会更改您的环境,并可能使您使用错误的Ruby版本,或者您使用的Ruby版本无法看到您安装的gems


编辑:正如Eric Platon指出的,尝试在该命令的开头添加
bundle exec
,以确保加载了bundler,并且将使用正确版本的Rails。

bundler是一种确保运行时环境使用正确库和版本的工具。通常,我们会在Ruby开发之前添加命令,包括Rails:

bundle exec rails generate controller StaticPages home help
bundle exec
接受命令及其参数,并将其运行到同一文件夹中的
Gemfile
中定义的环境中


正如@David Grayson提到的,
sudo
改变了环境。为了代码的安全性和打包,最好以当前用户的身份运行(并避免部署团队的愤怒)。

哈哈,我们的答案是颠倒的。多线程之美:-)你可以通过速度获得cookies;)谢谢你,埃里克!如果你不介意的话,可以继续提问吗?我是绿色的,但我真的在努力学习。所以如果我选择正确,我电脑上的每个用户都有一个不同的环境,每当我使用sudo时,它会影响我的mac系统吗?此外,我还执行了“gem pristine--all”和“bundle--path”,然后执行了我遇到问题的原始命令。但我仍然必须使用sudo来强制它工作,而且这不是我唯一一次输入命令,除非我使用sudo(例如其他脚手架),否则它不会工作。我怎么绕过苏多?我的mac电脑上有新用户档案吗?这是另一个问题。因此,我认为它应该是另一个问题(以便其他人可以搜索),或者与另一个问题关联(我相信这里有很多类似的问题)。如果需要的话,我有几分钟的时间移动到聊天室,但是基本的事情是
sudo
取决于您最初安装Ruby的方式。您似乎已将其安装在一个文件夹中,如果没有根级别的访问权限,gems将无法安装或运行。这是一个糟糕的安装,它会让你的Ruby生活非常痛苦。如何使用
RVM
rbenv
来管理Ruby安装?如果其中一个答案确实解决了您的问题,请将其中一个标记为答案。大卫的回答更快更简洁,所以我投了赞成票。请注意,我们的答案是颠倒的,所以我认为“正确”的答案应该是首先解决实际问题的答案:-)谢谢Eric。老实说,我以为我在用RVM来管理我的Ruby安装!但显然不是。我将仔细阅读并从get go=)中找出我做错了什么。RVM可以安装为
root
。。。也许这就是你每次都需要
sudo
的原因。在dev机器上,通常建议仅为您的用户安装它。