Tips và tricks khi làm việc với Ruby on Rails
Đã đế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. 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ả ...
Đã đế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.
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.
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ệnh
- Ctrl + e để đến cuối câu lệnh
Đâ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
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.
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ục home và mở file đó bằng Sublime (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
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.
Đã 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.
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)
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
Nguồn: http://www.rubyonrails365.com/tips-and-tricks/