Rails bundler
Bài đăng này đã không được cập nhật trong 4 năm
1. Introduce
- Một trong những command được sử dụng nhiều nhất khi làm việc với Rails có lẽ là
bundle install=)) - Vậy bạn có bao giờ hỏi ngoài
bundle installcòn có bundle gì nữa không. - Bundler hoạt động như thế nào.
- Bài viết này sẽ tìm hiểu sương sương về những thứ trên.
2. Bundler
- Để install bundler bạn chạy command sau
gem install bundler - Bundler sẽ install và tracking version của các gem được sử dụng trong dự án Ruby nhằm đảm bảo môi trường thống nhất cho Ruby project
- Bằng cách chạy
bundle install, bundler sẽ install các gem được khai báo trongGemfilevà dependencies cần thiết của gem đó - Thông tin về các gem đã được install và veriosn của gem cũng như bundler được tracking tại
Gemfile.lock - Vì vậy nên khi commit bạn nhớ commit cả
GemfilevàGemfile.locklên github.
3. Gemfile
Gemfilemô tả gem và các dependencies cần thiết cần được install để run một application nào đó của ruby.Gemfileđược đặt ở root của thư mục dự án.- Ví dụ đối với dự án Rails thì
Gemfilesẽ được đặt trong cùng thư mục vớiRakefile.
a. Global Sources
- Ở đầu
Gemfilesẽ khai báo source ở gem được list trongGemfile, thường là"https://rubygems.org"source "https://rubygems.org"
b. Ruby
- Phần này là optional, chỉ cần thiết nếu dự án của bạn có yêu cầu về version của ruby, ví dụ
ruby "1.9.3"
c. Gems
- List các gem cần thiết cho dự án của bạn, ví dụ
gem "nokogiri" - Ngoài ra còn có thêm 1 số tham số optional khác
i. Gem version (optional)
- Ví dụ
gem "nokogiri", "1.4.2" - Thay vì mô tả chính các version của gem, bạn còn có thể mô tả version của gem theo những cách khác nhau
- Ví dụ
gem "nokogiri", ">=1.4.2"sẽ install các version từ 1.4.2 trở về sau như 1.4.2, 1.4.3, 1.5, .... - Ví dụ
gem "nokogiri", "<=1.4.2"sẽ install các version từ 1.4.2 trở về trước như 1.4.1, 1.4.0, 1.3, .... - Ngoài ra bạn còn có thể sử dụng
>1.4.2hoặc<1.4.2 - Bạn cũng có thể sử dụng
gem "nokogiri", ">=1.4.2", "<=1.5.2" - Bên cạnh đó
gem "nokogiri", ~> 1.4.2"sẽ tương đương vớigem "nokogiri", ">= 1.4.2", "< 1.5" - Bên cạnh đó
gem "nokogiri", ~> 1.4"sẽ tương đương vớigem "nokogiri", ">= 1.4", "< 2.0"
ii. Gem Require (optional)
- Ví dụ
gem "nokogiri", require: false - Mô tả gem có được auto require khi chạy
Bundler.requirehay không require: truegem sẽ được autorequire khi chạyBundler.requirerequire: falsegem sẽ không được autorequire khi chạyBundler.require- Mặc định là
require: truenên bạn chỉ cần thêm option này khirequire: false
iii. Gem group (optional)
- Ví dụ
gem "nokogiri", group: :development gem "nokogiri", group: [:development, :test] - Mô tả group của gem, có thể là
:default,:development,:test,:staging,:production,:heroku, ... - Thông qua
Bundler.setupvàBundler.requiređể thêm gem và load path của ruby và require gem vào group# load all groups to Ruby's load path Bundler.setup # load :default group to Ruby's load path Bundler.setup(:default) # load :default group and :test group to Ruby's load path Bundler.setup(:default, :test) # require gems in :default group Bundler.require # require gems in :test group Bundler.require(:test) # require gems in :development and :test group Bundler.require(:development, :test) - Bạn cũng có thể khai báo gem theo group như sau
group :development, :test do gem "factory_bot_rails" gem "pry-rails" end
4. Bundle command
a. bundle install
- Install gem được khai báo trong
Gemfilevà các dependencies cần thiết của các gem đó - Tracking các gem đã install và version vào file
Gemfile.lock
b. bundle update
- Update gem lên version mới nhất
- Theo mặc định sẽ update toàn bộ gem được khai báo trong
GemfilevàGemfile.lock
c. bundle cache
- Copy tất cả gem có trong
GemfilevàGemfile.lockvào thư mụcvendor/cache
d. bundle config
- Setting bundler config
e. bundle help
- Hiển thi chi tiết các command của bundler
f. bundle add
- Thêm gem vào
Gemfilevà chạybundle install - Có thể thêm các option như --group, --version của gem muốn thêm
g. bundle gem
- Tạo skeleton project để tạo 1 gem mới
h. bundle info
- Hiển thị thông tin của gem
i. bundle init
- Tạo
Gemfile
k. bundle list
- Hiển thị danh sách gem có trong bundler
l. bundle open
- Mở source code của gem
m. bundle outdated
- Hiển thị danh sách các gem đã bị outdated và version mới hơn của gem đó
n. bundle remove
- Xóa gem khỏi
Gemfile
o. bundle show
- Hiển thị tất cả gem có trong Gemfile
p. bundle version
- Hiển thị verrsion của bundler
All rights reserved