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 saugem 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ạy- Bundler.require
- require: falsegem sẽ không được autorequire khi chạy- Bundler.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ư saugroup :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
 
  
 