0
0
Lập trình
Sơn Tùng Lê
Sơn Tùng Lê103931498422911686980

Hướng dẫn xuất các route của Ruby on Rails sang định dạng CSV bằng Rake

Đăng vào 3 tuần trước

• 3 phút đọc

Chủ đề:

Railstip

Giới thiệu

Trong quá trình nâng cấp dự án Ruby on Rails, việc theo dõi và liệt kê các route cùng với URI là rất quan trọng. Điều này giúp đội ngũ phát triển dễ dàng nhận biết những route nào bị ảnh hưởng trong quá trình thay đổi mã nguồn, từ đó giúp bộ phận QA kiểm tra và xác định các phần mềm ảnh hưởng. Ban đầu, tôi đã sử dụng lệnh rails routes có sẵn trong Rails để lấy danh sách các route. Tuy nhiên, nó chỉ in ra kết quả trên shell, và tôi phải sao chép, định dạng lại vào bảng tính, mất rất nhiều thời gian. Vậy có cách nào để thực hiện việc này một cách hiệu quả hơn không? Tôi đã tìm ra một cách đơn giản và tiện lợi hơn, và tôi muốn chia sẻ với bạn để tiết kiệm thời gian.

Các bước thực hiện

1. Tạo một ứng dụng Rails mới

Đầu tiên, bạn cần tạo một ứng dụng Rails mẫu:

Copy
rails new export_routes_to_csv_demo

2. Tạo một file Rake

Tiếp theo, bạn cần tạo một tập tin rake để thực hiện xuất CSV:

Copy
bundle exec rails g task routes_csv csv

Tạo file routes_csv.rake và thêm mã sau:

Copy
namespace :routes do
  desc 'Xuất tất cả các route đã định nghĩa dưới dạng file CSV.'
  task :csv => :environment do

    class CSVFormatter
      def initialize
        @buffer = []
      end

      def result
        @buffer.join("\n")
      end

      def section_title(title)
        @buffer << "\n#{title}:"
      end

      def section(routes)
        routes.map do |r|
          @buffer << "#{r[:name]},#{r[:verb]},#{r[:path]},#{r[:reqs]}"
        end
      end

      def header(routes)
        @buffer << 'Prefix,Verb,URI Pattern,Controller#Action'
      end

      def no_routes
        @buffer << <<-MESSAGE.strip_heredoc
          Bạn không có bất kỳ route nào được định nghĩa!
          Vui lòng thêm một số route vào tệp config/routes.rb.
          Để biết thêm thông tin về các route, bạn có thể xem hướng dẫn Rails ở đây: http://guides.rubyonrails.org/routing.html.
        MESSAGE
      end

    end

    all_routes = Rails.application.routes.routes
    require 'action_dispatch/routing/inspector'
    inspector = ActionDispatch::Routing::RoutesInspector.new(all_routes)
    puts inspector.format(CSVFormatter.new)
  end
end

3. Chạy lệnh xuất

Để xem kết quả trên console, bạn chạy lệnh sau:

Copy
bundle exec rake routes_csv:csv

Để xuất kết quả vào file file.csv, bạn có thể sử dụng các lệnh sau, tùy thuộc vào hệ điều hành:

  • Trên Ubuntu:
Copy
bundle exec rake routes_csv:csv | tr " " "," > file.csv
  • Trên Mac:
Copy
bin/rails routes_csv:csv | pbcopy
pbpaste > file.csv

Hy vọng rằng hướng dẫn này sẽ giúp ích cho bạn trong quá trình làm việc với các route trong Ruby on Rails!

source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào