Saat ini saya sedang memigrasikan aplikasi Rails 2.x.x lama ke Rails 3.2. Saya melakukan ini dengan memecah bagian tertentu dari aplikasi monolitik menjadi aplikasi kecil yang terspesialisasi. Masalah saya terletak pada duplikasi kode. Aplikasi yang lebih kecil akan berbagi kode sisi klien yang sama untuk tata letak umum, javascript, dan css. Bagaimana cara mengemas tata letak dan kode sisi klien sehingga dapat dibagikan di antara aplikasi terpisah yang berdiri sendiri? Dugaan awal saya adalah hal ini dapat dilakukan dengan mesin yang dapat dipasang. Tapi saya tidak yakin apakah itu berlebihan atau tidak.
Bagaimana cara berbagi tata letak dan aset antara dua aplikasi Rails yang terpisah?
Jawaban (1)
Saya menulis blog http://blogs.pigrider.com/blogs/22 untuk menunjukkan bagaimana saya membangun mesin tata letak bersama untuk digunakan dalam beberapa aplikasi di Rails 3.2 langkah demi langkah.
Sekilas ke blog saya:
Blog ini menunjukkan bagaimana saya membangun mesin Rails untuk berbagi tata letak di antara beberapa aplikasi langkah demi langkah. Cara saya membangun mesin tata letak bersama di blog ini mungkin bukan yang terbaik. Namun saya hanya ingin memberikan sedikit petunjuk kepada mereka yang masih bergelut dalam membangun mesin semacam ini.
Nama mesin saya adalah "PigriderLayout". Jalankan plugin command rails new PigriderLayout --mountable -d mysql untuk membuat proyek mesin baru. Disini saya menggunakan -d mysql karena saya menggunakan MySQL sebagai database. Anda dapat mengubahnya agar sesuai dengan database Anda, dan jangan lupa untuk menambahkan permata database yang sesuai ke dalam Gemfile. Saya memasukkan permata 'mysql2', '0.3.11' ke dalam Gemfile saya.
Hasilkan pengontrol untuk semua konten tata letak bersama. Jalankan perintah ini Rails generate controller main globalLayout aboutUs contactUs. Di sini saya memiliki tiga tindakan di pengontrol utama ini. Lalu edit file config/routes.rb, biarkan seperti ini:
PigriderLayout::Engine.routes.draw jangan
cocok dengan "AboutUs"=>"main#aboutUs", :as=>:aboutUs
cocok dengan "ContactUs"=>"main#contactUs", :as= >:hubungiKami
selesaiDi direktori app/views/pigrider_layout/main, Anda akan melihat tiga file tampilan sekarang. Mereka adalah globalLayout.html.erb, aboutUs.html.erb, dan contactUs.html.erb. Anda dapat menulis apapun yang Anda inginkan di aboutUs.html.erb dan contactUs.html.erb. Di file globalLayout.html.erb, saya menulis:
......