Tips và tricks khi làm việc với Ruby on Rails
Bài đăng này đã không được cập nhật trong 8 năm
Đã đến lúc cần phải sử dụng terminal, chức năng tiện ích trong Ruby on Rails hiệu quả hơn.
Tìm kiếm câu lệnh đã từng sử dụng trong command line
Nếu bạn là một người dùng terminal lâu năm thì hãy bỏ qua phần này.
Với một người mới chạm tay vào command line thì việc tìm lại được câu lệnh mình gõ hoặc được gõ bởi một pro ra hướng dẫn cho mình quả là vị cứu tinh trong ngày.
Hãy dùng Ctrl + r
để thực hiện reverse-i-search
và bạn có thể tìm được câu lệnh mình mới gõ gần đây, nhấn Ctrl + r
một lần nữa để tìm kết quả tiếp theo.
Có thể dùng history
để hiển thị những command đã được dùng.
Tiết kiệm thời gian sử dụng phím Backspace và Delete
Khi gõ một câu lệnh quá dài và bạn nhận ra mình đã viết sai ở đâu đó, có thể dùng những câu lệnh dưới đây để sửa sai:
Ctrl + k
để xóa mọi thứ bên phải con trỏCtrl + w
để xóa một từ bên trái của con trỏCtrl + a
để đến đầu câu lệnhCtrl + e
để đến cuối câu lệnh
Truy cập expression cuối cùng của rails console
Đây là một trong những việc làm phí phạm thời gian vì khi bạn chạy 1 câu query và quên mất không gán kết quả trả về lên một biến nào.
Và việc làm tiếp theo là ấn phím up
và lần này chạy lại câu query đó và gán vào một biến.
Thật may mắn là mỗi khi một câu lệnh được chạy trong console
thì giá trị trả về được gán vào biến _
(biến underscore)
Ví dụ:
tính tổng của 1, 2, 3, 4 và 5
2.2.0 :001 > 1 + 2 + 3 + 4 + 5
=> 15
2.2.0 :002 > _
=> 15
Tìm controller và action của bất kỳ url nào
Thủ thuật này rất hữu dụng cho những dự án có số dòng code trong routes.rb
quá lớn cùng với nhiều namespaces.
Việc mở file routes.rb
hay chạy rake routes
và lọc ra những kết quả mong muốn qủa là mất thời gian và vất vả.
Bạn có thể sử dụng Rails.application.routes.recognize_path
Ví dụ:
[3] pry(main)> Rails.application.routes.recognize_path "http://localhost:3000/admin/items"
=> {:controller=>"admin/items", :action=>"index"}
Lưu ý: Khi sử dụng cho những action không phải là GET thì trả về đúng controller nhưng không đúng action.
Loại bỏ RDoc và ri
Lý do hợp lệ đứng đầu cho việc một lập trình viên Ruby chơi đó là Đang chạy bundle install
Bạn đang lướt qua những dự án thú vị trên Github và quyết định sẽ clone
một repo và chạy bundle install
. Nhưng mà biết gì không, bạn phải tốn thêm 30 phút để cài đặt tất cả các gem. Điều tồi tệ hơn là khi bạn biết rằng nửa thời gian đó được dùng cho việc tải RDoc
và ri
. Bạn chắc cũng chả bao giờ phải động đến chúng đâu, và tệ hơn nữa bạn không biết chúng là cái quái gì. Chung quy lại là nếu mà bạn đang sử dụng Internet thì bạn sẽ không dùng đến chúng đâu.
RDocs là những tài liệu ruby thiết yếu đi kèm với gem. Trang web như RubyDocs
sử dụng chúng để tạo ra tài liệu từ mã nguồn. Nhưng khi bạn chạy bundle
thì chúng được mặc định tải về. Bạn có thể tắt chức năng này bằng 2 cách:
Cách 1
Thêm option --no-ri
và --no-rdoc
khi cài đặt gem
ví dụ:
gem install devise --no-ri --no-rdoc
option này sẽ nói với bundler rằng bạn không hề muốn tải rdoc
và ri
của gem đó. Nhưng việc này chỉ giúp bạn cài đặt cho một gem duy nhất mà thôi, bạn muốn làm toàn bộ gems thì hãy theo cách thứ 2.
Cách 2
- Bước 1: Tạo
.gemrc
trong thư mụchome
và mở file đó bằngSublime
(bạn có thể dùng bất kỳ text editor nào khác)
subl ~/.gemrc;
- Bước 2: Thêm những dòng sau vào
gem: --no-ri --no-rdoc
install: --no-rdoc --no-ri
update: --no-rdoc --no-ri
Chạy bundle install nhanh hơn
Những dự án cỡ vừa thường có lượng gems rơi vào khoảng 50, chưa kể đến những gem phụ thuộc cho gem kể trên.
Bạn có thể tăng tốc độ bằng cách yêu cầu bundler
chạy thêm job
,
ví dụ:
bundle install --jobs=4
Như vậy cùng lượng gem sẽ được cài đặt song song và sẽ tận dụng được cpu lẫn băng thông của bạn.
Nhìn vào mã nguồn của một gem
Đã bao giờ bạn muốn nhìn vào trong mã nguồn của một gem và lại phải google để xem mã nguồn trên repo của gem đó? Như vậy là bạn đã làm mất đi sự tiện lợi của text editor đem lại rồi.
Bạn có thể mở mã nguồn của pry
như sau:
EDITOR=subl bundle open pry
Và folder chứa mã nguồn hiện ra trước mắt bạn, tiện lợi phải không? Bạn thậm chí còn có thể thêm, xóa, chỉnh sửa tùy ý bạn để xem ảnh hưởng của những dòng code thêm (bớt) đó ra sao. Sau đó để đưa mã nguồn của gem về trạng thái ban đầu chỉ cần chạy
gem pristine pry
BAM!!! Mọi thứ quay trở lại như xưa.
Tìm vị trí ghi mã muồn của bất kỳ method nào
Khi bạn muốn nhìn vào mã nguồn của những method mà bạn include vào từ gem nhưng tên method lại giống với các method của module hay class khác.
Bạn hoàn toàn có thể tìm ra vị trí mà method đó được định nghĩa ở đâu bằng cách sử dụng source_location
.
Ví dụ:
User.new.method(:password=).source_location
=> #["/Users/ror365/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/activemodel-4.2.0/lib/active_model/secure_password.rb", 119]
Wow! Có cả đường dẫn lẫn số dòng của method đó. (inlove)
Lời kết
Tips và Tricks về một lĩnh vực thì nhiều vô kể, chỉ là chúng ta có sẵn lòng chia sẻ với cộng đồng không thôi. Với những người mới gia nhập cộng đồng RoR thì những tips, tricks trên sẽ giúp các bạn tiết kiệm thời gian thao tác và tập trung vào nghiên cứu hơn
All rights reserved