2017-02-09 53 views
1

在描述使用rbenv和Bundler配置环境的每个设置中,说明始终使用gem install bundler将捆绑安装为系统宝石。通常,他们也会推荐rbenv-bundler rbenv plugin,但是the maintainers of rbenv discourage thisRails是否需要安装为系统宝石?

没有说明的是如何安装Rails。初始化一个新的Rails项目会为bundler创建一个基本的Gemfile。但是,为了初始化Rails项目,需要安装Rails。制作目录似乎很奇怪甚至是错误,编写一个包含Rails的基本Gemfile,运行bundle install,然后将Rails初始化为当前目录。事实上,我怀疑它甚至可以工作,如果它工作的话。

那么,Rails是否需要作为系统宝石安装?gem install rails?如果是这样,那么如何管理Rails的多个版本,尤其是使用rbenv?

回答

2

完全有意义不是将rails安装为系统宝石。

没有搞乱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安装到系统全局范围。

+0

这是有道理的。这是一些重复的工作 - 制作目录,制作一个Gemfile,然后将该Gemfile移开。这是几个命令。但它确实让除Bundler之外的所有东西都存在于供应商(或任何你想称之为)的目录中。 –

+0

将它作为系统Gem安装实际上是一个非常糟糕的主意,也许除非使用定制的docker实例。将系统和用户地图库分开是一个好主意。从操作系统角度来看,Rails应用程序基本上是用户登陆的。所以部署用户的rbenv更好。 – Tilo

+0

这就是为什么我在示例中将宝石安装到应用程序内的供应商文件夹中的原因。我个人也使用Foreman/Heroku Local管理其他服务(数据库,Redis等)以将它们隔离到应用程序。 –

2

答案是否定的,你不安装轨道作为系统宝石。创建一个项目文件夹,添加.ruby-version文件并在这个文件中添加你想要的红宝石版本,即2.3.0。 rbenv使用此文件中指定的版本,它不会是系统的红宝石。

现在你可以从这个目录做gem install bundler并创建Gemfile并添加你的rails版本。现在运行bundle install并在轨道上滚动.....