Xoá code thừa trong rails app
TIL
589
Ruby
114
White

Hieu Nguyen viết ngày 31/01/2018

Sau một thời gian phát triển thì Rails app thường phình lên khá to, và nếu không được dọn dẹp thường xuyên thì sẽ xảy ra tình trạng có nhiều code dư thừa, hoặc không được dùng đến nữa. Những đoạn code này, dù không chạy, nhưng vẫn gây ra vấn đề cho bạn:

  • Tốn thời gian chạy test
  • Tốn thời gian maintain (nếu bạn không biết là nó không còn được dùng nữa)
  • Tốn thời gian parse và tìm kiếm của ruby khi hoạt động

Dưới đây là một số tool mình thu nhặt được để dọn dẹp bớt đống code dư thừa đó.

Xoá method không dùng đến bằng unused

unused là một thư viện cực kỳ tuyệt vời, nó có thể giúp bạn tìm ra hầu hết các method và class hầu như không được sử dụng trong hệ thống và xoá chúng đi (bước này thì bạn phải tự làm). Cách sử dụng unused khá dễ:

  • Cài đặt Ctags (MacOS mặc định có nhưng bạn vẫn phải install và ghi đè lên)
# MacOS
brew install ctags

# Ubuntu
apt-get install ctags
  • Cài đặt unused:
# MacOS
brew tap joshuaclayton/formulae
brew install unused

# Other: bạn phải cài đặt stack, 
# cũng như phải thay đổi một chút config để cài thành công
stack update
stack install unused
  • Chạy unused
ctags -R . # tạo tags file
unused

Xoá partial dư thừa:

Gem discover-unused-partials rất hữu ích trong việc giúp bạn tìm ra những partial không còn được dùng đến trong codebase của bạn. Cách sử dụng cũng rất dễ dàng:

gem install discover-unused-partials
discover-unused-partials .

Xoá các step dư thừa trong cucumber

Cucumber có options --dry-run -f stepdefs rất hữu ích trong việc tìm ra những step không được dùng đến nữa:

cucumber --dry-run -f stepdefs | grep -B 1 "NOT MATCHED BY ANY STEPS"

Xoá các file ảnh không được sử dụng:

Anh Kumar có một đoạn script rất tiện lợi để tự động xoá những file ảnh không được reference bởi code trong rails app của bạn. Tuy nhiên, nên cẩn thận kiểm tra lại trước khi commit lên master:

images = Dir.glob('app/assets/images/**/*')
unused_images = []
images.each do |image|
  unless File.directory?(image)
    puts "Checking #{image}..."
    result = `grep -nr #{File.basename(image)}* app/ `
    if result.empty?
      unused_images << image
      `rm -rf #{image}`
    end
  end
end

Kết

Chúc các bạn xoá code vui vẻ :smile:

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Hieu Nguyen

22 bài viết.
10 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
11 3
Khi làm việc với Ruby và Rails, có lẽ không ít lần các bạn đã gặp các tác vụ download file về server của mình. Ruby hỗ trợ nhiều công cụ download k...
Hieu Nguyen viết 3 năm trước
11 3
White
11 4
Đối với những người đã từng xây dựng API server, chắc hẳn ai cũng đã từng hơn một lần đau đầu với việc lựa chọn thư viện JSON. Bài viết sau đây hi ...
Hieu Nguyen viết 3 năm trước
11 4
White
11 0
Như đã nói trong (Link), mình sẽ chia sẻ tổng hợp kết quả của các benchmark mình đã dùng để so sánh tốc độ render JSON của các thư viện phổ biến hi...
Hieu Nguyen viết 3 năm trước
11 0
Bài viết liên quan
White
8 6
Chưa xem phần 2? Xem (Link) Trong bài viết này tôi giới thiệu cho các bạn về khái niệm function arity, một cách gọi mĩ miều của số lượng argument ...
Lơi Rệ viết gần 3 năm trước
8 6
White
0 2
fCC: Technical Documentation Page note So I have finished the HTML part of this exercise and I want to come here to lament about the lengthy HTML ...
HungHayHo viết 27 ngày trước
0 2
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
22 bài viết.
10 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!