RVM

Dùng Python bao nhiêu năm nay và đã quen với virtualenv. Hôm nay quyết định nghịch cái blog nhiều hơn với Jekyll, nên cần động đến Ruby, và tất nhiên là cần môi trường ảo, vậy là đi đến RVM

Cảm nhận đầu tiên là hơi khó dùng. Vì mình quen với phong cách của virtualenv, là mỗi một project sẽ tạo instance riêng của Python tại từng project, và sau khi activate thì rất rõ ràng. Kiểu như:

(flaskr)~/Documents/workspace/pycode/flask/story $

Có một số điều, mà mất một buổi sáng mình mới quen được ;__;

Note: Trong bài này mình sử dụng virtualenv, nếu bạn dùng virtualenvwwrapper thì tham khảo bài viết tham khảo cuối bài nhé

Interpreters

Virtualenv

Mỗi project sẽ có một Python version riêng. Tạo virtualenv bằng cách:

virtualenv myproject

Mặc định virtualenv cài đặt python tại /usr/bi/python. dùng tham số -p để cài đặt version khácn

RVM

RVM thì cài Ruby interpreter và version ở thư mục của user (~/rvm/rubies)

Ví dụ ta cài đặt:

rvm install 2.2.3
rvm install 2.2.4

Thì ruby sẽ ở thư mục: ~/rvm/rubies/ruby-2.2.3/bin/ruby, ~/rvm/rubies/ruby-2.2.4/bin/ruby

Để chuyển đổi:

rvm use 2.2.3 # kiểm tra với which ruby -> ~/rvm/rubies/ruby-2.2.3/bin/ruby
rvm use 2.2.4 # kiểm tra với which ruby -> ~/rvm/rubies/ruby-2.2.4/bin/ruby

Chuyển lại ruby mặc định

rvm use system

Environments

Virtualenv

Với mỗi proj, virtualenv cài đặt một môi trường riêng. Kích hoạt bằng:

source bin/activate

tại thư mục vừa tạo.

RVM

rvm sử dụng khái niệm gemset để định nghĩa môi trường ảo. Mỗi gemset là một môi trường ảo riêng biệt.

Tạo mới:

rvm use 1.9.2@myproject --create

Tương đương với:

rvm use 1.9.2
rvm gemset create myproject
rvm gemset use myproject

Các thao tác với gemset: list, use, delete

Quản lý package

Python

Quản lý qua pip và file requirements.txt

Nội dung file:

Django >= 1.2
South == 0.7.2

Cài đặt

pip install -r /path/to/my/requirements.txt

Ruby

Sử dụng bundle và và Gemfile. (file tên Gemfile là mặc định, nếu thay cần chỉ rõ tên khi dùng lệnh)

Nội dung file:

source "http://rubygems.org"

gem "sinatra", "~> 0.9.0"
gem "rack-cache"
gem "rack-bug"

Cài đặt

bundle install

Kết

virtualenvrvm là các công cụ không thể thiếu nếu bạn sử dụng Python hay Ruby. Ban đầu mình khá lười, nhưng sau khi bỏ thời gian tìm hiểu, chúng là không thể thiếu :D

Tham khảo: RVM for Pythonistas, virtualenv for Rubyists, Gilles Fabio