2011-06-24 92 views
20

Làm thế nào tôi có thể chuyển đổi Forum application Tôi đã phát triển thành một Rails Engine, để nó có thể được nhúng bên trong các ứng dụng khác?Làm thế nào để chuyển đổi một ứng dụng Rails 3 hiện có thành một Engine?

Tôi nên thêm, giữ hoặc xóa nội dung nào? Tôi có nên cung cấp một cách để tích hợp các mô hình? Làm cách nào để thiết lập tuyến đường và cấu hình người dùng? Làm thế nào để gói nó vào một Gem? Tôi nên theo dõi điều gì?


Sau khi đọc bài báo và các tài liệu hướng dẫn, tôi quản lý để thu hẹp câu hỏi của tôi:

  • Tôi có nên không gian tên các mô hình? Tức là, tôi có nên giữ chúng trong mô-đun của Engine và trong thư mục app/models/engine không?
  • Tệp cấu hình nào trong config tôi nên giữ lại?
  • Còn thư mục public thì sao? Trong Rails 3.1, bảng định kiểu và javascripts đã được chuyển đến thư mục app/assets, giải quyết vấn đề này, nhưng làm cách nào để đạt được hiệu ứng tương tự trong Rails 3.0?

Trả lời

9

Có quá nhiều câu hỏi ở đây để trả lời tất cả câu trả lời đúng cách. Đây là một trong những điều đó sẽ trả hết cho bạn bằng cách chỉ đào sâu vào và thử nó. Khi bạn hiểu sâu hơn về nó, hãy quay lại và hỏi những câu hỏi cụ thể mới.

Dưới đây là một số tài nguyên tôi đã sử dụng khi tôi mới thực hiện việc này.

Đối với hầu hết các phần, bạn có thể giữ mọi thứ trong thư mục ứng dụng của bạn mà họ đang có. Bạn cũng có thể giữ routes.rb trong thư mục cấu hình nhưng có thể có một số vấn đề nếu một số tuyến đường của bạn xung đột với các ứng dụng.

Bạn có thể muốn tạo generator để tạo di chuyển có tất cả các bảng mà công cụ của bạn yêu cầu. Các máy phát điện khác có thể được tạo để ghi đè chế độ xem mặc định và loại điều đó.

Tạo ứng dụng thử nghiệm sử dụng đá quý của bạn. Nhiều vấn đề bạn sẽ gặp phải là đảm bảo rằng bạn đang tải đúng các phụ thuộc của công cụ. Trong khi bạn đang ở trong phát triển, chỉnh sửa Gemfile của ứng dụng thử nghiệm của bạn để trỏ thẳng vào nguồn gốc của đá quý của bạn ... một cái gì đó như thế này:

gem 'my-forum', :path => '~/work/my-forum' 

namespacing

Bạn ít nhất nên đặt tên bảng của bạn/mô hình để bạn không gặp phải xung đột đặt tên. Nhìn vào ứng dụng diễn đàn hiện tại của bạn, tôi sẽ ít nhất là tiền tố tất cả các bảng của bạn với 'forum_'. Rất có thể ai đó đang sử dụng động cơ của bạn sẽ có một mô hình khác có tên là Category chẳng hạn ... do đó, ForumCategory sẽ là lựa chọn tốt hơn.

Chắc chắn không gian tên bất kỳ lớp nào bạn tạo trong thư mục lib.

Config file

Bạn sẽ muốn giữ bạn routes.rb trong thư mục config. Bạn cũng có thể cần phải giữ cho initializers của bạn là tốt. Mọi ứng dụng cụ thể sẽ cần phải di chuyển ở nơi khác.

tập tin Công

Với Rails 3.0.x, bạn có thể giữ stylesheets và javascripts trong thư mục công cộng. Tôi nghĩ rằng có một chút mã bạn cần phải thêm vào lớp Engine của bạn mặc dù ...

initializer "static assets" do |app| 
    app.middleware.use ::ActionDispatch::Static, "#{root}/public" 
end 
+0

Cảm ơn! Sau khi học và thử nó, tôi đã xoay sở để thu hẹp danh sách câu hỏi của mình. Tuy nhiên, có những thứ mà tôi vẫn chưa tìm ra. Đã cập nhật câu hỏi của tôi, hãy xem. –

+0

Tôi đã thực hiện một số bổ sung, nhưng bạn thực sự nên bắt đầu một câu hỏi mới về tràn ngăn xếp nếu bạn cần thêm chi tiết cụ thể. –

Các vấn đề liên quan