Rails 是否需要安装为系统 gem?

Does Rails need to be installed as a system gem?

在描述使用 rbenv 和 Bundler 配置环境的每个设置中,说明总是将 bundle 安装为系统 gem,使用 gem install bundler。通常,他们还会推荐 rbenv-bundler rbenv plugin, but the maintainers of rbenv discourage this.

没有描述的是如何安装Rails。初始化一个新的 Rails 项目会为捆绑器创建一个基本的 Gemfile。但是,为了初始化 Rails 项目,需要安装 Rails。做一个目录,写一个包含Rails,运行 bundle install,然后初始化Rails到当前目录的基本Gemfile,看起来很奇怪,甚至是错误的。事实上,我怀疑它是否有效,如果它真的有效的话。

那么,Rails需要和gem install rails一起安装成系统gem吗?如果是这样,如何管理 Rails 的多个版本,尤其是 rbenv?

答案是否定的,您没有将 rails 安装为系统 gem。创建一个项目文件夹,添加 .ruby-version 文件并在此文件中添加您想要的 ruby 版本,即 2.3.0。 rbenv 使用此文件中指定的版本,它不会是系统的 ruby。

现在您可以从此目录执行 gem install bundler 并创建 Gemfile 并添加您的 rails 版本。现在 运行 bundle install 并在 RAILS 的轨道上滚动......

安装rails作为系统gem完全有意义。

在不弄乱 rbenv 或您使用的其他 ruby 版本管理器的情况下,以下是从包含 Gemfile 的目录创建(初始化)新 Rails 应用程序的简要步骤:

mkdir rails_app
cd rails_app
vi Gemfile # Edit it to include a rails version you need
bundle --path vendor # Wait for bundler to finish
bundle exec rails new ./

最后一步会问:Overwrite /path/to/rails_app/Gemfile? (enter "h" for help) [Ynaqdh]。输入 y 获取默认的 Rails Gemfile 内容。

注意:上述步骤指定本地 vendor 目录(在 rails 应用程序文件夹内)以避免将 gems 安装到系统全局范围。

强制rails供应宝石。

$ mkdir foo
$ cd foo
$ bundle config --local path vendor
$ rails new .