我曾使用ruby版本管理器(rvm
)来安装新版本的ruby。运行命令rvm rubies
会显示已安装的所有rubies版本。清单如下。
rvm rubies
ruby-1.9.3-p551 [ x86_64 ]
ruby-2.1.5 [ x86_64 ]
ruby-2.2.4 [ x86_64 ]
* ruby-2.3.0 [ x86_64 ]
ruby-2.3.1 [ x86_64 ]
# => - current
# =* - current && default
# * - default
我尝试运行命令bundle exec rake rb:mgirate
,我收到以下错误。
/usr/local/rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/rubygems/dependency.rb:319:in `to_specs': Could not find 'bundler' (>= 0.a) among 5 total gem(s) (Gem::LoadError)
Checked in 'GEM_PATH=:/nix/.nix-profile/lib/ruby/gems', execute `gem env` for more information
错误表明未安装bundler。我运行了命令gem install bundle
,我收到以下错误。
ERROR: While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /nix/.nix-profile/lib/ruby/gems directory.
它说我没有写权限。我用Google搜索了错误,它与更新ruby和ruby版本有关。我更新到新的ruby版本的原因是因为heroku run rake db:seed
没有在生产中播种数据。我可能是因为兼容性问题。因此,我决定更新到新版本的ruby。服务器,postgresql和其他一切正常。我无法运行bundle,因为我无法安装gem。任何肝脏将非常感激。谢谢!
答案 0 :(得分:2)
通过运行命令rvm user 2.3.0切换到ruby版本2.3.0解决了这个问题。完成后,您应该重新启动工作区。出现错误的原因是,当您切换ruby版本时,它也会更改gem文件。因此,它无法识别宝石。
答案 1 :(得分:-3)
嘿,只需在命令开头添加“ sudo ”即可。它肯定会起作用,因为错误说你没有写入权限。如果您将检查该目录的权限,那么您将发现只有所有者具有写入权限,并且sudo将我们从用户模式带到所有者模式。因此,您不会再次收到此错误。如果它不起作用,请告诉我。