ฉันจะแชร์เลย์เอาต์และแอสเซทระหว่างแอปพลิเคชัน Rails สองตัวที่แยกจากกันได้อย่างไร

ขณะนี้ฉันกำลังย้ายแอป Rails 2.x.x รุ่นเก่าไปยัง Rails 3.2 ฉันทำสิ่งนี้โดยแบ่งส่วนเฉพาะของแอปพลิเคชันเสาหินออกเป็นแอปพลิเคชันพิเศษขนาดเล็ก ปัญหาของฉันอยู่ที่การทำสำเนาโค้ด แอปพลิเคชันขนาดเล็กจะใช้โค้ดฝั่งไคลเอ็นต์เดียวกันสำหรับโครงร่างทั่วไป, จาวาสคริปต์และ CSS ฉันจะจัดแพ็กเกจเค้าโครงและโค้ดฝั่งไคลเอ็นต์เพื่อให้สามารถแชร์ระหว่างแอปพลิเคชันสแตนด์อโลนที่แยกจากกันได้อย่างไร การเดาเบื้องต้นของฉันคือสามารถทำได้ด้วยเอ็นจิ้นที่สามารถติดตั้งได้ แต่ฉันไม่แน่ใจว่ามันเกินกำลังไปหรือเปล่า


person Jim Jeffers    schedule 16.04.2013    source แหล่งที่มา
comment
git submodule ot engine ก็โอเค   -  person apneadiving    schedule 16.04.2013
comment
หากคุณต้องการโซลูชันระดับต่ำกว่านี้ คุณสามารถสร้างลิงก์สัญลักษณ์ไปยังโฟลเดอร์ที่มี เค้าโครง   -  person Oto Brglez    schedule 16.04.2013
comment
ซ้ำกัน: stackoverflow.com/questions/2669477/   -  person fotanus    schedule 16.04.2013


คำตอบ (1)


ฉันเขียนบล็อก http://blogs.pigrider.com/blogs/22 เพื่อแสดงให้เห็นว่าฉัน สร้างเอ็นจิ้นเลย์เอาท์ที่ใช้ร่วมกันเพื่อใช้ในหลายแอพพลิเคชั่นใน Rails 3.2 ทีละขั้นตอน

ภาพรวมบล็อกของฉัน:

บล็อกนี้แสดงวิธีที่ฉันสร้างกลไก Rails เพื่อแชร์เลย์เอาต์ระหว่างแอปพลิเคชันต่างๆ ทีละขั้นตอน วิธีที่ฉันสร้างกลไกการจัดวางที่ใช้ร่วมกันในบล็อกนี้อาจไม่ดีที่สุด อย่างไรก็ตาม ฉันแค่อยากจะบอกเบาะแสให้กับผู้ที่ยังคงดิ้นรนในการสร้างเครื่องยนต์ประเภทนี้เท่านั้น

  1. ชื่อเครื่องยนต์ของฉันคือ "PigriderLayout" เรียกใช้ปลั๊กอินรางคำสั่ง new PigriderLayout --mountable -d mysql เพื่อสร้างโปรเจ็กต์เอ็นจิ้นใหม่ ที่นี่ฉันใช้ -d mysql เพราะฉันใช้ MySQL เป็นฐานข้อมูล คุณสามารถเปลี่ยนให้พอดีกับฐานข้อมูลของคุณเองได้ และอย่าลืมเพิ่มฐานข้อมูล gem ลงใน Gemfile ฉันใส่ gem 'mysql2', '0.3.11' ลงใน Gemfile ของฉัน

  2. สร้างตัวควบคุมสำหรับเนื้อหาเค้าโครงที่ใช้ร่วมกันทั้งหมด เรียกใช้รางคำสั่งนี้สร้างคอนโทรลเลอร์หลัก globalLayout เกี่ยวกับเรา ติดต่อเรา ที่นี่ฉันมีการกระทำสามประการในคอนโทรลเลอร์หลักนี้ จากนั้น แก้ไขไฟล์ config/routes.rb โดยให้มีลักษณะดังนี้:

    PigriderLayout::Engine.routes.draw do
    ตรงกับ "AboutUs"=>"main#aboutUs", :as=>:aboutUs
    ตรงกับ "ContactUs"=>"main#contactUs", :as= >:ติดต่อเรา
    สิ้นสุด

  3. ในไดเร็กทอรี app/views/pigrider_layout/main คุณควรเห็นไฟล์มุมมองสามไฟล์ในขณะนี้ ได้แก่ globalLayout.html.erb, aboutUs.html.erb และ contactUs.html.erb คุณสามารถเขียนอะไรก็ได้ที่คุณต้องการใน aboutUs.html.erb และ contactUs.html.erb ในไฟล์ globalLayout.html.erb ฉันเขียน:

......

person user2684801    schedule 15.08.2013
comment
โปรดลองอ่าน stackoverflow.com/help/deleted-answers นี้ เพื่อทำความเข้าใจวิธีไม่ ตอบ กล่าวคือ คำตอบที่ไม่ได้ตอบคำถามโดยพื้นฐาน: เป็นมากกว่าลิงก์ไปยังไซต์ภายนอก - person Radim Köhler; 15.08.2013