分享 ROR 环境搭建小结~强大的 RVM

chenyihu · 2016年06月23日 · 3273 次阅读

初入 ROR,倒腾了下环境,记录一下。

搭建步骤参考论坛的 Wiki 之前做过 iOS 开发,机器上已经装好了很多开发工具,比如 Xcode 等,所以前面跳过,主要是搞定 RVM, RubyGems, Bundler, Rails

RVM

安装和使用参考论坛 Wiki

完成之后整个系统的 Ruby 环境都被 RVM 所管理,以前安装的 Gem 也不能用了:

$ pod
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/dependency.rb:296:in `to_specs': Could not find 'cocoapods' (>= 0) among 99 total gem(s) (Gem::LoadError)
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/dependency.rb:307:in `to_spec'
    from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_gem.rb:47:in `gem'
    from /usr/local/bin/pod:22:in `<main>'

没关系,只要用 RVM 重建就可以了。

Global gemsets

可以先不安装 Ruby,设置下 global gemsets 把常用的 Gem 加进去,这样每次使用 RVM 安装 Ruby 都会自动把其中的 Gem 同时安装好,可以节省不少时间。详见 这篇文档

subl ~/.rvm/gemsets/global.gems

gem-wrappers
rubygems-bundler 
rake
rvm
rails       
rubocop         
cocoapods   

设置下 .gemrc ,切换源到淘宝,同时忽略文档安装:

subl ~/.gemrc

:sources:
- https://ruby.taobao.org/
:update_sources: true
:verbose: true
gem: --no-document --no-ri 

然后就可以使用 RVM 安装一个 Ruby 版本,考虑到目前大多数教程都基于 2.0,直接运行:

$ rvm list known
...
$ rvm install 2.0.0
...
$ rvm 2.0.0 --default

安装完之后,global gemsets 里的 Gem 也自动装好可以用了:

$ rails -v
$ Rails 4.2.6

Gem

安装 Gem 需要注意下环境,因为 RVM 会把不同版本的 Ruby 的 Gem 进行分离,同时还有 gemsets 机制,一般不用 gemsets 而是使用 Bundler,但是一些常用的工具 Gem 安装到 global gemsets 还不错,因为 gemsets 可以分享给所有 Ruby 版本使用:

$ rvm @global do gem install [gem_name]

or

$ rvm 2.0.0@global
$ gem install [gem_name]

不要使用 sudo gem install 详见 这篇文档

常用 Gem 命令:

gem -v 
gem install gem_name 
gem list 
gem update gem_name 
gem update 
gem install -v x.x.x gemname 
gem uninstall gem_name 
gem list --local gem_name
gem search gem_name

版本更新:

rvm rubygems current

删掉所有 Gem

# Rubygems >= 2.1.0
gem uninstall -aIx
# Rubgems < 2.1.0
for i in `gem list --no-versions`; do gem uninstall -aIx $i; done

Rails & Bundler

因为设置了 global gemsets 所以 rails 也被自动安装好了,可以愉快的开始 ROR 之旅, 但是需要注意环境,错误的版本环境就没法和教程上的例子保持一致。

因为自动安装好的是 Rails 4.2.6,所以需要首先安装教程对应的 Rails 版本,比如 4.0.0

gem install rails -v 4.0.0

然后到工作目录下使用这个特定版本的 Rails 创建工程

rails _4.0.0_ new project

然后锁定此目录的 Ruby 环境,支持 rbenv,详见 这篇文档

echo 1.9.3 > .ruby-version   # OR:
rvm --ruby-version use 1.9.3

此时可以修改 Gemfile 锁定 Gem 的版本:

$ bundle install 
...
$ rake about
Ruby version              2.0.0 (x86_64-darwin15.4.0)
RubyGems version          2.4.8
Rack version              1.5.5
Rails version             4.0.0

因为 RVM 自动集成 rvmgems-bundler 所以在这个目录下可以直接根据 Gemfile 的配置运行 rails, rake, rspec 等命令,而不再需要 bin/rails 或者 bundle exec rails,Happy :)

Done!

环境检测

which ruby
echo $PATH
echo $GEM_HOME
echo $GEM_PATH
gem env
which rake
rvm gemdir
gem which gem_name  # 非常好用

扩展阅读

Bundler 到底是怎么工作的 (暨 Ruby 依赖管理历史回顾) RVM 与 Bundler 的爱恨情仇

总结:RVM 很强大,基本上搞定了所有开发环境相关问题。

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请 注册新账号