Cách tiếp cận sử dụng pin của Rails là một trong những tài sản lớn nhất của nó. Không có framework nào khác giúp bạn nhanh chóng đưa ứng dụng của mình đi vào hoạt động dễ dàng như vậy, ít nhất một phần là nhờ vào trình tạo của Rails.
Nếu bạn đã sử dụng Rails một thời gian, bạn sẽ gặp các Generator. Cần tạo một ứng dụng mới? Chạy rails new . Bạn cần xây dựng một loạt mô hình và chế độ xem mới? Chạy rails generate scaffold . Có rất nhiều tính năng khác có sẵn để giúp bạn bắt đầu nhanh chóng hoặc hợp lý hóa quy trình làm việc của mình.
Nhưng đôi khi chỉ sử dụng máy phát điện thôi là chưa đủ. Bạn có thể muốn tùy chỉnh hành vi của các lệnh này hoặc thậm chí tạo lệnh của riêng bạn. Trong bài viết này, chúng ta sẽ xem xét kỹ hơn về các trình tạo - đặc biệt là cách tạo ứng dụng Rails tùy chỉnh của riêng bạn bằng cách sử dụng các mẫu.
Hãy bắt đầu!
Trình tạo Rails là gì?
Đừng nhầm lẫn với các hàm tạo (mà bạn có thể quen thuộc với Python hoặc Javascript), Railsgenerator là các lệnh Thor tùy chỉnh tập trung vào việc tạo ra mọi thứ.
Có rất nhiều ví dụ. Bạn có thể đã quen với trình tạo mô hình (rails generate model ) để tạo các mô hình ActiveRecord mới hoặc trình tạo di chuyển (rails generate migration ) để tạo ra các di chuyển mới. Ngoài ra còn có rails generate generator cái mà — bạn đoán rồi đấy — tạo ra một trình tạo mới!
Các máy phát điện có thể gọi lẫn nhau — ví dụ:rails scaffold sẽ gọi nhiều trình tạo khác — và cung cấp các phương pháp để tạo hoặc sửa đổi tệp, cài đặt đá quý, chạy các tác vụ cào cụ thể, v.v. Hãy tạo một trình tạo thông số mô hình đơn giản để hiểu cách thức hoạt động của nó.
Tạo trình tạo của riêng bạn trong Ruby on Rails
Chạy như sau:
Điều này sẽ tạo ra một số tệp mới trong /lib/generators/model_spec . Chúng tôi có thể sửa đổi model_spec_generator.rb trong thư mục lib/generators/model_spec/ để tạo tệp thông số mô hình vào đúng thư mục:
template lệnh sẽ tìm tệp mẫu trong lib/generators/model_spec/templates thư mục và hiển thị nó đến vị trí đã chỉ định — spec/models thư mục. Lệnh này sẽ thay thế các biến kiểu ERB được tìm thấy trong tệp mẫu.
Bằng cách đặt source_root , chúng tôi sẽ cho trình tạo của mình biết nơi nó có thể tìm thấy các tệp mẫu được tham chiếu. Bản mẫumodel_spec.rb trong thư mục lib/generators/model_spec/templates/ có thể trông như thế này:
Khi bạn đã tạo tệp đó, bạn có thể chạy trình tạo để tạo tệp thông số kỹ thuật mới.
Nhiều loại đá quý được trang bị máy phát điện như thế này. Trên thực tế, chúng tôi đã tạo một phiên bản đơn giản hóa của máy phát điện Rspec đi kèm. FactoryBot có một trình tạo cho các nhà máy. Còn rất nhiều ví dụ nữa.
Trình tạo trong nhiều loại đá quý khác nhau phức tạp hơn trình tạo mà chúng tôi đã tạo. Chúng ta có thể làm cho trình tạo của mình lấy các đối số hoặc thậm chí nối nó vào các trình tạo hiện có, chẳng hạn như rails scaffold . Hãy tham khảo tài liệu về trình tạo Rails nếu bạn muốn tìm hiểu thêm.
Vì vậy, trình tạo có khả năng đơn giản hóa quy trình làm việc của bạn trong ứng dụng hiện có. Nhưng chúng ta cũng có thể sử dụng trình tạo để tùy chỉnh việc thiết lập ứng dụng mới không?
Nhập mẫu!
Mẫu trong Ruby on Rails
Như tên cho thấy, mẫu là các tệp để tùy chỉnh thiết lập ứng dụng của bạn. Đừng nhầm lẫn những tệp này với các tệp mẫu mà chúng ta đã thảo luận trước đây! Về cơ bản, chúng chỉ là các trình tạo có mục đích cụ thể, được chứng minh bằng API mẫu. Mặc dù không hoàn toàn giống với máy phát điện nhưng chúng rất giống nhau.
Nếu bạn có tệp mẫu hiện có, bạn có thể sử dụng nó như sau:
Thay vì chỉ định một tệp cục bộ, bạn cũng có thể chỉ định một URL. Điều này đặc biệt hữu ích vì nó cho phép bạn chia sẻ các mẫu ứng dụng.
Bạn không bị giới hạn việc sử dụng các mẫu khi chạy rails new cũng vậy. Nếu đã thiết lập một ứng dụng, bạn có thể áp dụng các mẫu sau đó bằng cách thực thi:
Mẫu có thể cực kỳ hữu ích. Ai lại không muốn tự động thêm cùng một vài viên ngọc quý và thực hiện các thay đổi cấu hình giống nhau mỗi khi họ tạo một ứng dụng mới? Việc tạo mẫu ứng dụng của riêng bạn rất thú vị — ngay cả khi về lâu dài việc này không tiết kiệm được nhiều thời gian.
Tạo mẫu của riêng bạn trong Rails
Bây giờ chúng ta đã biết về trình tạo và cách sử dụng mẫu. Hãy tạo một mẫu ứng dụng đơn giản để tự động hóa một số bước thiết lập.
Cách bạn thiết lập ứng dụng Rails phụ thuộc rất nhiều vào sở thích cá nhân, nhưng đây là một ví dụ:
- Cài đặt đá quý dotenv.
- Tạo một
.env.developmenttập tin cho môi trường phát triển. - Điều chỉnh tệp cấu hình cơ sở dữ liệu để sử dụng các biến môi trường.
- Tùy chọn cài đặt và thiết lập Rspec.
Hãy tạo một tệp cục bộ — mytemplate.rb — và thêm dotenv sử dụng gem lệnh.
Vì chúng ta vừa thêm gem dotenv nên hãy tạo một .env.development tập tin chứa cấu hình cơ sở dữ liệu của chúng tôi.
Bạn có thể tạo một tệp mới có nội dung cụ thể bằng cách sử dụng create_file . Bạn sẽ không tìm thấy điều này trong tài liệu mẫu hoặc trình tạo vì phương thức này do Thor cung cấp. Bạn cũng có thể gặp bí danh file . Các mẫu ứng dụng được đánh giá trong ngữ cảnh Rails::Generators::AppGenerator , và đó chính xác là nơi file bí danh đã được xác định.
app_name biến chứa đối số đầu tiên của rails new . Bằng cách sử dụng biến này, chúng tôi có thể đảm bảo tệp cấu hình của chúng tôi khớp với ứng dụng đã tạo.
Tiếp theo, hãy sử dụng các biến môi trường của chúng tôi để kết nối với cơ sở dữ liệu. Chúng ta có thể ghi đè toàn bộ config/database.yml sử dụng create_file lệnh, nhưng thay vào đó hãy sửa đổi nó bằng cách sử dụng inject_into_file .
Chúng ta có thể sử dụng cả chuỗi hoặc biểu thức chính quy với after đối số để chỉ định nơi chèn nội dung.
Tất nhiên, việc sử dụng loại cấu hình này chỉ có ý nghĩa nếu người dùng không tạo ứng dụng bằng SQLite. Bạn có thể kiểm tra sự hiện diện của một số đối số nhất định bằng cách sử dụng options biến. Tốt nhất bạn nên đọc mã nguồn của trình tạo ứng dụng Rails để xem có những tùy chọn nào.
Cuối cùng nhưng không kém phần quan trọng, hãy cho phép người dùng cài đặt Rspec nếu họ muốn. Có nhiều phương pháp khác nhau để lấy thông tin đầu vào của người dùng và tạo các mẫu tương tác. yes? phương thức yêu cầu người dùng xác nhận:
Chúng tôi đã biết gem phương pháp, nhưng generate và after_bundle là mới.
Như đã đề cập trước đó, Rspec thêm các trình tạo riêng của nó và bạn có thể gọi các trình tạo này (hoặc bất kỳ trình tạo nào khác) trực tiếp từ mẫu của bạn. Nhưng có một nhược điểm — đá quý được chỉ định bằng gem phương thức chỉ được cài đặt ở cuối mẫu. Đang gọi generate với một trình tạo được cung cấp bởi một viên ngọc như vậy sẽ không thành công — đó là lý do tại sao bạn nên đăng ký lệnh dưới dạng lệnh gọi lại với after_bundle .
Lưu ý :Trước khi kết thúc, hãy nói ngắn gọn về cách tạo hoặc sửa đổi tệp. Chúng tôi đã sử dụng create_file và inject_into_file , nhưng có nhiều lựa chọn khác. Bạn có thể gặp copy_file hoặc template khi đọc các mẫu khác nhau. Tôi không đề cập đến chúng ở đây để giữ cho mọi thứ đơn giản. Nếu bạn muốn tạo các mẫu nâng cao hơn, bạn nên biết rằng có tồn tại các phương pháp xử lý tệp khác.
Kết quả:Mẫu cuối cùng trong Rails
Mẫu cuối cùng sẽ trông như thế này:
Bạn có thể kiểm tra mẫu cụ thể này bằng cách chạy:
Hoặc:
Để tận dụng cấu hình cơ sở dữ liệu tùy chỉnh.
Như đã đề cập, tệp này hoàn toàn phù hợp để chia sẻ dưới dạng ý chính của GitHub. Điều chỉnh nó cho phù hợp với nhu cầu của bạn, tải nó lên rồi chia sẻ nó với đồng nghiệp, bạn bè và bất kỳ ai khác quan tâm đến mẫu ứng dụng tùy chỉnh của bạn 😉.
Tìm hiểu thêm về trình tạo và mẫu Rails
Không cần phải nói, chúng ta chỉ mới bắt đầu ở đây.
Mọi người đều có sở thích khác nhau trong việc viết và phát triển ứng dụng Rails, vì vậy có rất nhiều trình tạo và mẫu ứng dụng hiện có. Bạn có thể tìm hiểu rất nhiều về cách thực hiện các tùy chỉnh cụ thể bằng cách đọc về chúng. Tôi khuyên dùng Jumpstart và RailsBytes của ChrisOliver, RailsBytes là bộ sưu tập các mẫu do cộng đồng quản lý.
Ngoài ra còn có Thoughtbot's Suspenders, điều này đã truyền cảm hứng cho tôi tìm hiểu sâu hơn về các mẫu và trình tạo Rails. Tôi thậm chí còn viết mẫu ứng dụng của riêng mình — Schienenzeppelin — mặc dù không cập nhật nhưng vẫn có thể mang lại nguồn cảm hứng.
Kết thúc:Bắt đầu với Trình tạo và mẫu Ruby on Rails
Trong bài đăng này, chúng tôi đã xem xét những điều cơ bản về trình tạo Rails và cách sử dụng chúng. Chúng tôi đã tạo ra các máy phát điện của riêng mình để đơn giản hóa việc viết các thông số kỹ thuật của mô hình mới.
Sau đó, chúng tôi đã đi sâu vào các mẫu và tìm hiểu cách bạn có thể tạo một mẫu đơn giản để tùy chỉnh thiết lập ứng dụng của mình. Đây có thể là một chút công việc, nhưng cũng khá bổ ích. Nếu việc viết mẫu của riêng bạn không dành cho bạn thì có rất nhiều mẫu hiện có trên mạng để bạn lựa chọn!
Chúc bạn tạo mẫu vui vẻ!
Tái bút. Nếu bạn muốn đọc các bài đăng của Ruby Magic ngay khi chúng được đăng tải, hãy đăng ký nhận bản tin Ruby Magic của chúng tôi và không bao giờ bỏ lỡ một bài đăng nào!
Hans-Jörg Schnedlitz
Tác giả khách mời Hans của chúng tôi là kỹ sư Rails đến từ Vienna, Áo. Anh ấy dành phần lớn thời gian của mình để viết mã hoặc đọc về mã hóa, và đôi khi còn viết về nó trên blog của mình! Khi anh ấy không ngồi trước màn hình, bạn có thể sẽ tìm thấy anh ấy ở bên ngoài, đang leo núi.
Tất cả bài viết của Hans-Jörg Schnedlitz