40 viên ngọc Ruby tốt nhất chúng ta có thể sống mà không cần

Ban đầu bài viết này đã được đăng trên Blog Codica.

Ngày nay, các nhà phát triển web có thể truy cập các giải pháp được tạo sẵn thay vì viết các chức năng từ đầu, điều này tất nhiên có tác động tích cực lớn đến tốc độ phát triển.

Khi chúng ta nhìn vào Ruby từ quan điểm này, nó nổi bật nhờ các thư viện rộng lớn được gọi là đá quý Ruby. Chúng cung cấp các chức năng đặc biệt cho các ứng dụng Ruby mà bạn xây dựng. Giả sử bạn muốn có một chức năng xác thực trong chương trình của mình - bạn không cần phải viết một chức năng, bạn có thể lấy nó dưới dạng một viên đá quý. Và đây chỉ là một ví dụ trong số hàng ngàn viên đá quý Ruby có sẵn miễn phí.

Trong bài viết hiện tại, chúng tôi sẽ khám phá những viên đá quý Ruby hàng đầu mà chúng tôi sử dụng trong phát triển web tại Codica và những nhiệm vụ cụ thể mà mỗi chúng giúp chúng thực hiện.

Một viên ngọc Ruby: những gì phía sau nó?

Mỗi viên ngọc chứa một thành phần chức năng cụ thể bao gồm mọi tệp liên quan đến chức năng này. Với đá quý Ruby, bạn có thể tìm thấy một giải pháp gần như cho bất kỳ nhiệm vụ nào, điều này sẽ cắt giảm đáng kể thời gian bạn cần để phát triển web.

Các thư viện này có bộ lưu trữ riêng gọi là RubyGems và trình quản lý gói - trình đóng gói đá quý. Cả hai đều có các công cụ để dễ dàng xử lý việc cài đặt đá quý và máy chủ để phân phối. Phiên bản đầu tiên của RubyGems được phát hành năm 2004.

Một cộng đồng mạnh mẽ là một trong những tài sản của Ruby. Những người đam mê Ruby chủ động nhất tìm giải pháp một tay và thực hiện chúng trong mã. Sau đó, họ hợp nhất các thư viện này thành nguồn mở, và đó là nơi bắt đầu cuộc sống của đá quý.

Tại thời điểm bài viết này được tạo ra, tổng số đá quý là hơn 148.782.

Nguồn: Rubygems.org

Một lượng giải pháp sẵn sàng như vậy sẽ loại bỏ sự cần thiết của việc phát minh lại bánh xe mỗi khi bạn đối mặt với thử thách. Được truy cập miễn phí, nhiều chức năng đã được viết và chúng bao gồm tất cả các khía cạnh phát triển: từ đảm bảo chất lượng mã đến triển khai.

Đá quý Ruby hàng đầu mà chúng tôi sử dụng

Cho dù chúng tôi xây dựng MVP cho một công ty khởi nghiệp hoặc tái cấu trúc nền tảng phân tích tài chính đa miền, đá quý Ruby phục vụ chúng tôi như một nền tảng vững chắc.

Chúng tôi đã chuẩn bị một danh sách các loại đá quý Ruby tuyệt vời, đây chỉ là một phần nhỏ trong tất cả các loại đá quý giúp chúng tôi xây dựng các sản phẩm tuyệt vời.

Mã chất lượng

Một trong những đặc điểm cơ bản của mã là chất lượng và tính đơn giản của nó. Nó ảnh hưởng trực tiếp đến tốc độ và hiệu suất của một ứng dụng. Để khám phá và loại bỏ các khối mã cồng kềnh và thực hiện tái cấu trúc đúng cách, chúng tôi sử dụng hai thư viện.

Rubocop là một công cụ để phân tích và định dạng mã tĩnh Ruby. Ra khỏi hộp, nó sẽ thực thi nhiều hướng dẫn được nêu trong Hướng dẫn Phong cách Ruby cộng đồng. RuboCop cực kỳ linh hoạt và hầu hết các khía cạnh trong hành vi của nó có thể được điều chỉnh thông qua các tùy chọn cấu hình khác nhau. Ngoài việc báo cáo các vấn đề trong mã của bạn, RuboCop cũng có thể tự động sửa một số vấn đề cho bạn.

Overcommit là một viên ngọc để cấu hình móc Git. Nó là tuyệt vời để giữ cho chất lượng mã cao. Nó cho phép điều chỉnh git hook cho linters khởi chạy trước mỗi lần xác nhận.

Gỡ lỗi

Cho dù chất lượng mã cao đến đâu, đôi khi lỗi và lỗi là không thể tránh khỏi. Để khám phá và loại bỏ lỗi, nhóm chúng tôi tìm thấy những viên đá quý sau khá hữu ích.

Better_errors là một viên ngọc để hiển thị lỗi. Nó hiển thị thông tin hữu ích về một lỗi và có tác động trực quan tuyệt vời. Better_errors thay thế trang lỗi Rails tiêu chuẩn. Nó cũng được áp dụng bên ngoài Rails trong bất kỳ ứng dụng Rack nào dưới dạng phần mềm trung gian Rack.

Byebug là một trình gỡ lỗi đơn giản để sử dụng và giàu tính năng cho Ruby. Viên ngọc này cho phép thực hiện mã theo từng dòng, tạm dừng giữa các tác vụ và thực thi mã, thay đổi các biến khi đang di chuyển.

Kiểm tra

Quá trình phát triển web là không thể nếu không có kiểm soát chất lượng của ứng dụng được tạo. Ở đây có thử nghiệm, cho phép bạn đánh giá chất lượng. Để chạy và quản lý kiểm tra trơn tru, nhóm của chúng tôi sử dụng các tiện ích sau.

RSpec gợi ý Phát triển hướng hành vi cho Ruby. Đá quý cung cấp các tiêu chuẩn để thử nghiệm ứng dụng Ruby on Rails. Nó cung cấp DSL dễ đọc hơn, so với thư viện thử nghiệm tiêu chuẩn TestUnit. Ngoài ra, nó dễ dàng tích hợp với nhiều loại đá quý khác tạo điều kiện thuận lợi cho quá trình thử nghiệm.

Capybara là một khung kiểm tra chấp nhận cho các ứng dụng web. Nó hoàn hảo chạy song song với RSpec. Viên ngọc chịu trách nhiệm cho các thử nghiệm tích hợp bắt chước hành động của người dùng trên một trình duyệt. Nó cho phép mô tả kịch bản ủy quyền trong một vài dòng (truy cập trang chủ, nhập thông tin đăng nhập và mật khẩu, nhấp vào nút Đăng nhập), sau đó đề xuất các phương pháp thuận tiện khác nhau để kiểm tra gỡ lỗi.

Ảnh chụp màn hình Capybara là một viên ngọc để tự động lưu ảnh chụp màn hình nếu kịch bản Capybara bị hỏng. Cùng với Capybara và Cucumber, RSpec hoặc Minitest, đá quý cho phép xem mã nguồn và chụp ảnh màn hình (khi có liên quan) cho mỗi thất bại trong bộ thử nghiệm. Nó lưu trữ HTML cho trang thất bại và hình ảnh chụp màn hình (khi sử dụng capybara-webkit, Selenium hoặc poltergeist). Một lựa chọn như vậy là khá có giá trị khi bạn cần tìm một vấn đề trong các vòng đấu thất bại.

Parallel_tests làm cho các bài kiểm tra được viết bằng TestUnit, RSpec và Cucumber vượt qua nhanh hơn khi chạy chúng song song trên nhiều CPU. Để tăng tốc quá trình, mã sử dụng tất cả các lõi của hệ thống. Nó chạy thử nghiệm và sử dụng cơ sở dữ liệu thử nghiệm bổ sung. Đá quý hỗ trợ Rails và các khung Ruby khác.

Factory Bot là một thư viện để thiết lập các đối tượng Ruby làm dữ liệu thử nghiệm. Nó có một cú pháp định nghĩa đơn giản. Thư viện duy trì nhiều chiến lược xây dựng như các thể hiện đã lưu, các thể hiện chưa được lưu, băm thuộc tính và các đối tượng gốc. Ngoài ra, nó cung cấp hỗ trợ cho nhiều nhà máy cho cùng một lớp (người dùng, admin_user), bao gồm cả thừa kế của nhà máy.

Chromedriver_helper cung cấp dễ dàng cài đặt và sử dụng chromedriver. Trên đó, nó đóng vai trò là bộ điều hợp webdo selenium dự án Chromium. Nó cài đặt một trình trợ giúp chromedriver thực thi trong một đường dẫn đá quý, cho phép Selenium gọi nó là trình điều khiển web. Khi được yêu cầu, kịch bản sẽ tải xuống tệp nhị phân có liên quan cho một nền tảng và cài đặt nó vào ~ / .chromedriver-helper, sau đó thực thi nó. Ở đây, gem cho phép các dự án cụ thể thậm chí chọn phiên bản nào của chromedriver mà chúng muốn chạy.

Shoulda Matchers là một viên ngọc cung cấp các bài kiểm tra một lớp đơn giản cho chức năng Rails thông thường giúp tăng tốc độ viết các bài kiểm tra cho một công suất điển hình.

Simplecov là một trong những viên ngọc hữu ích để thử nghiệm. Nó cho thấy tỷ lệ phần trăm của mã được bao phủ bởi các bài kiểm tra đơn vị. Do đó, gem khuyến khích các nhà phát triển viết mã đã kiểm tra 100%, điều này làm tăng đáng kể chất lượng của nó.

Database Cleaner cung cấp vùng phủ mã cho Ruby 1.9+ với thư viện cấu hình mạnh mẽ và tự động kết hợp vùng phủ sóng giữa các bộ thử nghiệm. Nó thường được áp dụng song song với RSpec và được sử dụng để dọn dẹp cơ sở dữ liệu thử nghiệm khi khởi chạy thử nghiệm. Đá quý cho phép điều chỉnh thời gian dọn dẹp cơ sở dữ liệu: trước khi các thử nghiệm khởi chạy, trước / sau khi chạy từng thử nghiệm.

RSpec :: Retry là một công cụ cung cấp: thử lại ngẫu nhiên thất bại ví dụ RSpec. Nó thêm một tùy chọn: thử lại đôi khi không thành công các mẫu RSpec. Nếu một mô hình có tùy chọn: thử lại, RSpec sẽ thử lại ví dụ số lần cụ thể cho đến khi mẫu hoạt động.

Faker là một thư viện để tạo dữ liệu demo như tên, địa chỉ và số điện thoại.

Triển khai

Triển khai là một giai đoạn quan trọng của phát triển web và có một thư viện giúp chúng tôi vận hành quy trình một cách trơn tru.

Mina là một công cụ tự động hóa máy chủ và triển khai nhanh. So với Capistrano, một công cụ tự động hóa máy chủ từ xa, Mina hoạt động nhanh hơn nhiều. Nó tạo ra toàn bộ thủ tục dưới dạng tập lệnh Bash và chạy nó từ xa trong máy chủ. Trái ngược với Capistrano, nơi mỗi lệnh được chạy riêng trên các phiên SSH riêng, Mina tạo một phiên SSH cho mỗi lần triển khai. Nó giảm thiểu khối lượng công việc kết nối SSH.

Nhân tiện, tại Codica, chúng tôi đã xây dựng công cụ riêng cho Mina, được gọi là mina-multideploy. Nó cho phép triển khai các ứng dụng trên một số máy chủ song song.

Xác thực và ủy quyền

Hầu hết các giải pháp web yêu cầu một hệ thống xác thực và ủy quyền. Dù là trang thương mại điện tử hay nền tảng xuất bản, bảo vệ dữ liệu của người dùng luôn đứng đầu. Để thực hiện một giải pháp an toàn, chúng tôi sử dụng một số đá quý.

Devise là một giải pháp xác thực linh hoạt cho Rails dựa trên Warden. Devise giúp xây dựng một hệ thống nhận dạng ở bất kỳ mức độ phức tạp nào - từ xác thực qua email và mật khẩu đến hệ thống giới thiệu. Tóm lại, nó có 10 mô-đun, bao gồm:

  • Có thể xác nhận: gửi email với hướng dẫn xác nhận và xác minh xem tài khoản đã được xác nhận trong khi đăng nhập chưa;
  • Có thể phục hồi: đặt lại mật khẩu người dùng và gửi hướng dẫn đặt lại;
  • Có thể nhớ: quản lý việc tạo mã thông báo và xóa để ghi nhớ người dùng từ cookie đã lưu;
  • Có thể theo dõi: theo dõi tài khoản đăng nhập, dấu thời gian và địa chỉ IP.

Đá quý Ruby-JWT là một triển khai Ruby đơn giản của tiêu chuẩn RFC 7519 OAuth JSON Web Token (JWT). Là một công cụ để kiểm tra xác thực người dùng, nó được coi là một trong những hệ thống truyền thông tin an toàn nhất giữa hai bên.

Trong sơ đồ này, một máy chủ ứng dụng được cấu hình để kiểm tra xem JWT đến có phải là máy chủ được tạo với máy chủ xác thực hay không.

CanCanCan là một viên ngọc ủy quyền siêu tiện lợi. Nó cho phép tạo và xử lý người dùng vai trò và quy tắc trong các ứng dụng, cung cấp một bộ trợ giúp cho các chế độ xem và bộ điều khiển. Ngay cả tệp ability.rb trong thư mục mô hình có thể chứa một hướng dẫn dễ hiểu và dễ đọc với một mô tả về quyền cho mỗi nhóm người dùng. Nó tương tác trơn tru với đá quý cung cấp xác thực người dùng.

OmniAuth là một hệ thống xác thực linh hoạt sử dụng phần mềm trung gian Rack. Nó là một thư viện cho phép tạo ra các nhà cung cấp để xác thực thông qua các tài khoản mạng xã hội như Google hoặc Facebook. Thư viện đã chứa một danh sách rộng lớn các nhà cung cấp sẵn sàng sử dụng.

Tải tệp lên

Đôi khi chúng ta cần xây dựng các ứng dụng web cho phép người dùng tải lên các loại tệp khác nhau, như tài liệu hoặc hình ảnh. Để làm cho tính năng này hữu ích và thân thiện nhất có thể, chúng tôi áp dụng một vài thư viện.

Carrierwave là một giải pháp tuyệt vời để tải lên và xử lý tệp cho Rails, Sinatra và các khung web Ruby khác. Carrierwave cho phép tạo các phiên bản, thêm, xóa và tải chúng từ một địa điểm từ xa. Bên cạnh đó, nó có các tùy chọn thử nghiệm và cấu hình. Đá quý Carrierwave hoạt động với AWS S3 và trong những trường hợp như vậy, nó phù hợp với đá quý Fog, tích hợp với nhiều máy chủ đám mây, bao gồm Máy chủ Rackspace và Hộp sáng.

Carrierwave_backgrounder hoạt động với Carrierwave. Nó cho phép di chuyển xử lý hình ảnh hoặc nén vào nền. Hiện tại, nó cung cấp hỗ trợ cho Công việc bị trì hoãn, Resque, Sidekiq, SuckerPunch, Girl Friday, Qu và Queue Classic.

MiniMagick phục vụ như là một thay thế nhỏ cho RMagick. Đá quý cho phép giảm bộ nhớ xử lý Ruby. Nó cung cấp tất cả các tùy chọn dòng lệnh của ImageMagick.

Tìm kiếm

Trong một số dự án, lượng thông tin quá lớn. Trong trường hợp này, việc tìm kiếm dữ liệu cần thiết có thể là một thách thức. Để thực hiện tùy chọn tìm kiếm thân thiện với người dùng nhất có thể, chúng tôi tận dụng một tiện ích.

Elaticsearch là một hệ thống tìm kiếm phổ biến được sử dụng rộng rãi trong các doanh nghiệp. Viên ngọc tích hợp công cụ Elaticsearch vào các ứng dụng Rails với bộ tính năng đầy đủ của nó, bao gồm tìm kiếm toàn văn.

Bảng quản trị

Xây dựng và cung cấp một ứng dụng web rộng lớn thường liên quan đến việc quản lý một lượng lớn dữ liệu. Các tiện ích sau đây giúp nhóm của chúng tôi thực hiện một công cụ quản trị cơ sở dữ liệu toàn diện.

Activeadmin là khung quản trị cho các ứng dụng Ruby on Rails. Plugin cho phép tạo giao diện kiểu quản trị. Nó phân tách các mẫu ứng dụng kinh doanh phổ biến, đơn giản hóa mạnh mẽ việc thực hiện các giao diện thanh lịch cho các nhà phát triển.

Quản trị là một công cụ Rails. Nó giúp xây dựng một bảng điều khiển quản trị đáp ứng người dùng. Hiện tại, chúng tôi đã sử dụng nó, mặc dù chúng tôi đã khám phá những khả năng của nó và mong muốn thực hiện nó trong các dự án tương lai của chúng tôi.

Thêm đá quý tuyệt vời cho các nhiệm vụ khác nhau

Và như một phần thưởng, chúng tôi sẽ nhấn mạnh cho bạn thêm những viên đá quý mà bạn có thể thấy thú vị. Chúng tôi sẽ liệt kê chúng theo mức độ phổ biến của chúng (một số ngôi sao trên Github).

Sidekiq là một công cụ xử lý nền đơn giản và hiệu quả cho Ruby. Nó áp dụng các luồng để quản lý đồng thời nhiều chức năng trong cùng một quy trình. Mặc dù Sidekiq không yêu cầu Rails, nhưng nó sẽ kết hợp chặt chẽ với Rails để đơn giản hóa việc xử lý nền càng nhiều càng tốt.

Simple_form là một viên ngọc bổ sung DSL thuận tiện cho việc xây dựng biểu mẫu trên Rails. Nó gắn liền với một DSL đơn giản, không có ý kiến ​​về đánh dấu. Mẫu đơn tập trung vào tính linh hoạt và hỗ trợ với các bộ phận hiệu quả để xây dựng biểu mẫu. Mục đích chính của Simple Form là duy trì phương pháp cơ bản để xác định bố cục, cho phép các nhà phát triển tìm thấy thiết kế mã dễ nhìn nhất. Hầu hết DSL được lấy từ Formtastic.

Friendly_Id cung cấp hỗ trợ tuyệt vời khi làm việc với các plugin permalink cho ActiveRecord. Nó cho phép tạo các URL đẹp mắt có thể đọc được và quản lý các chuỗi thân thiện với con người như thể chúng là id kỹ thuật số cho các mô hình ActiveRecord.

Dotenv-rails là một viên ngọc Ruby để tải các biến môi trường từ một dotfile có thể nằm ngoài thư mục dự án chính. Bằng cách này, Dotenv cho phép lưu trữ dữ liệu cấu hình ứng dụng một cách an toàn.

Slim là một ngôn ngữ mẫu cố gắng giảm cú pháp thành các thành phần mã cần thiết mà không trở nên khó hiểu. Nó bắt đầu như một bài tập để xem có thể xóa bao nhiêu từ mẫu HTML tiêu chuẩn (<,>, đóng thẻ, v.v.). Càng nhiều người tỏ ra thích thú với Slim, càng có nhiều chức năng phát triển cùng với sự linh hoạt của cú pháp.

Draper gắn một lớp logic trình bày hướng đối tượng vào ứng dụng Rails. Draper giúp đối phó với chức năng này trong dòng người trợ giúp thủ tục hoặc thêm bulks vào mô hình. Trình trang trí Draper cung cấp một cách hiệu quả hơn để bọc các mô hình bằng logic liên quan đến bản trình bày để sắp xếp - và kiểm tra - lớp ứng dụng này.

Redis là một thư viện mã nguồn mở Ruby-client được cấp phép BSD. Nó đại diện cho một cửa hàng cấu trúc dữ liệu trong bộ nhớ. Đá quý được sử dụng như một cơ sở dữ liệu, bộ đệm và môi giới tin nhắn. Redis cung cấp hỗ trợ cho các cấu trúc dữ liệu như chuỗi, băm, danh sách, bộ, bộ được sắp xếp với các truy vấn phạm vi, bitmap, hyperloglog, chỉ mục không gian địa lý với các truy vấn và luồng bán kính. Đá quý bao gồm sao chép tích hợp, kịch bản Lua, trục xuất LRU, giao dịch và một số mức độ tồn tại trên đĩa. Trên đó, Redis cho phép tính sẵn sàng cao thông qua Redis Sentinel và phân vùng tự động với Redis Cluster.

Chú thích đơn giản hóa công việc với các mô hình Rails. Nó thêm một nhận xét tóm tắt sơ đồ hiện tại vào các tệp mô hình. Tính năng này giúp cho việc xây dựng mã dễ dàng hơn rất nhiều vì không cần phải kiểm tra tệp lược đồ mỗi lần.

PG_search xây dựng phạm vi có tên ActiveRecord khi áp dụng tìm kiếm toàn văn bản PostgreSQL. Nó là một thay thế khá tốt cho Elaticsearch khi sử dụng PostgreSQL. Tiện ích rất dễ cấu hình. Bên cạnh đó, nó cho phép thực hiện Tự động hoàn thành và Tìm kiếm theo các hiệp hội.

Wicky phục vụ cho việc xây dựng các trang từng bước (các hình thức tạo đối tượng, v.v.). Wicky tăng tốc và đơn giản hóa làm việc với bộ điều khiển.

Cấu hình cung cấp cách dễ nhất để kết hợp các cài đặt yaml đa môi trường với Rails, Sinatra, Pandrino và các cài đặt khác của Ruby. Nó cung cấp một giải pháp hấp dẫn và dễ dàng để quản lý đơn giản các thông số cụ thể của môi trường.

I18n- nhiệm vụ là một viên ngọc quý để làm việc với dịch thuật trong một ứng dụng. Nó có thể được áp dụng với bất kỳ dự án nào mà sử dụng đá quý Ruby I18n mặc định trong Rails. Nó cung cấp giao diện để làm việc với các ngôn ngữ địa phương, giúp tìm các bản dịch bị thiếu, bình thường hóa các tệp có bản dịch và thêm bản dịch mới thông qua API dịch của Google.

Money_rails là một viên ngọc tuyệt vời để làm việc với các loại tiền tệ. Nó cho phép tự động hóa các cập nhật về tỷ giá tiền tệ và chuyển đổi giá thành loại tiền cần thiết.

Ấn tượng cho phép đếm lượt xem trang. Trên đó, nó cho phép ghi nhật ký số lần xem trang nhiều lần cho mỗi yêu cầu và gán nó cho một mô hình. Mục đích của nó là cung cấp các số liệu thống kê có thể tùy chỉnh, làm cho nó có sẵn ngay lập tức trong ứng dụng, trái ngược với Google Analytics và lấy dữ liệu bằng API của họ. Bên cạnh đó, trường phái ấn tượng cho phép gán tin nhắn tùy chỉnh cho lượt xem trang.

Route_translator là một công cụ giúp quản lý các bản dịch của các tuyến ứng dụng. Nó có một định dạng từ điển đơn giản. Ban đầu, nó là một nhánh của plugin translate_routes nhưng sau đó được chuyển đổi thành một công cụ dịch thuật chính thức.

Để kết luận

Tại Codica, chúng tôi đánh giá cao Ruby vì tất cả các tính năng của nó, chẳng hạn như trọng tâm, rõ ràng và khả năng đọc ngôn ngữ tuyệt vời, thường được coi là giống như con người. Đá quý Ruby bổ sung rất nhiều vào lợi thế của Ruby, vì chúng mang lại tốc độ phát triển cao cho bất kỳ loại dự án nào.

Những viên đá quý chúng tôi đã liệt kê trong bài viết này đang giúp chúng tôi xây dựng những sản phẩm tuyệt vời cho các lĩnh vực khác nhau, như thương mại điện tử, du lịch, tài chính, đầu tư và những thứ khác.

Tất nhiên, có hàng ngàn viên đá quý Ruby, và mỗi viên đá quý đều có giá trị lớn. Ngay cả với nhiều năm kinh nghiệm trong Ruby, chúng tôi phát hiện ra ngày càng nhiều viên ngọc Ruby hữu ích và những cơ hội mà chúng cung cấp. Có luôn luôn có chỗ để cải thiện.

Chúng tôi hy vọng danh sách đá quý Ruby on Rails của chúng tôi sẽ giúp bạn với các dự án của bạn.

Được xuất bản lần đầu tại www.codica.com.

Thông tin thêm về Ruby on Rails:

Giống như nội dung của chúng tôi? Tìm thêm trên trang web của chúng tôi: