运行rails new myapp
后,它会下载宝石,然后在run bundle install
,我总是会提示输入我的系统密码。
有没有办法设置密码,所以我不必继续输入密码?
答案 0 :(得分:1)
为什么你必须首先输入密码?因为默认情况下,bundler会在系统范围的位置安装gem,例如/usr/local/lib/ruby/gems/2.2.0/gems/...
。这些宝石可供您电脑上的每个用户使用。
由于它是共享位置,因此通常只能由root编写,因此您必须输入密码才能获得root权限。
您的宝石存储在哪里?使用bundle show <gem>
查找特定的gem,例如rake
,在我的情况下说:
bundle show rake
/usr/local/lib/ruby/gems/2.2.0/gems/rake-10.4.2
让这个目录可写。但这不是一个好习惯,因为系统文件夹不应该对普通用户可写。如果您是唯一的用户,它仍然可以 - 那么您只需将此目录的所有者更改为:
sudo chown -R `whoami` /usr/local/lib/ruby/gems/
现在您是所有者,可以在不需要任何密码的情况下更改文件。
或者您可以使用bundler的--path
选项在项目目录中本地安装所有gem。通常,这些宝石通常安装在vendor/bundle
中,因此您可以使用此命令(您可以使用您想要的任何路径):
bundle install --path vendor/bundle
(下次执行bundle update
时,您可以省略--path
选项,因为它保存在项目的.bundle
文件夹中。)
您应该将vendor/bundle
文件夹添加到.gitignore
(或您正在使用的任何vcs),以便不将其签入。
由于您在自己的目录中编写,因此无需输入密码。这样做的缺点是,如果您有多个项目使用相同的宝石,宝石将在每个项目文件夹中重复。对于多用户系统,这是正确的方法。但如果您是唯一使用该机器的人,那么变体a)肯定有助于节省空间和安装时间。
我在我自己的开发机器上使用变体a),在部署机器上使用变体b)。
答案 1 :(得分:0)
这似乎是权限问题。试试chmod a+w /path/to/bundler