所以我是一个新手(至少我发现堆栈溢出了吗?)我正在使用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.
当我查看软件包安装程序时,它肯定列出了nokogiri 1.6.7.1 当我输入时:
bundle show nokogiri
我明白了:
/Users/user/.rvm/gems/ruby-2.2.3@rails3tutorial2ndEd/gems/nokogiri-1.6.7.1
我在我的macbook pro os x el capitan v 10.11.1上使用rails v 4.2.5
任何帮助都非常感谢。也许我可以从现在开始一年或两年付款!
答案 0 :(得分:1)
尝试在没有sudo
的情况下运行该命令。由于sudo
以root用户身份运行命令,因此它会改变您的环境并可能使您使用错误版本的Ruby,或者您使用的Ruby版本无法看到您安装的gem。 / p>
编辑:正如Eric Platon指出的那样,尝试在该命令的开头添加bundle exec
以确保加载了捆绑器并且将使用正确版本的Rails。
答案 1 :(得分:1)
Bundler是一个工具,可确保运行时环境使用正确的库和版本。通常,我们在命令前加上Ruby开发,包括Rails:
bundle exec rails generate controller StaticPages home help
bundle exec
接受命令及其参数,并将其运行到Gemfile
中定义的环境中,该环境位于同一文件夹中。
正如@David Grayson所说,sudo
改变了环境。为了安全和打包代码,最好以当前用户身份运行(并避免部署团队的愤怒)。