我刚刚在Ubuntu Production服务器上使用rbenv
将Ruby从版本 1.9.3-p448 更新到 1.9.3-p484 。更新似乎是成功的。 Ruby版本显示了我刚刚更新的最新版本。
然而,当我在目录下查看此版本 1.9.3-p484 的宝石时:
.rbenv/versions/1.9.3-p484/lib/ruby/gems/1.9.1/gems
。
我只在该目录中找到一些宝石。当我查看以前版本的目录时,那里有一大堆宝石。我是否错过了红宝石更新过程中的某个步骤?
现在我正在使用新的ruby版本,我是否需要重新安装此版本的所有宝石?如果是这样,运行bundle install
会完成工作吗?
答案 0 :(得分:2)
简而言之,是的。由于rbenv为每个ruby安装维护一个单独的目录,因此您需要再次运行bundle
来安装该ruby的gem。
例如,当您安装在ruby 1.9.3-p448下运行的gem时,该gem将安装 用于该ruby。当您切换到另一个版本的ruby时,在安装之前该gem将无法使用。
答案 1 :(得分:1)
是的,您需要为活动的ruby版本运行bundle install
。请确保正确设置活动ruby版本和应用程序的gemset。只需执行以下操作(在 Linux / MacOS 中):
$ cat .ruby-version
ruby-1.9.3-p484
$ cat .ruby-gemset
your_app_name
在宝石更新之前,请重新进入您的application / gem文件夹。
$ cd ..
$ cd your_app_name
我有一个额外的说明。如果您的应用程序是 gem ,则没有理由将.ruby-version
和.ruby-gemset
文件添加到 git 存储库中,只需将它们添加到.gitignore
个文件。当您的应用程序是 rails 应用程序时,将文件与Gemfile.lock
一起添加到 git repo中是有意义的,因为您修复了ruby版本,并且gem设置为web-application到那些唯一可行的应用程序。此外,某些云服务(如 heroku )需要将Gemfile.lock
添加到 git 回购中。