Как поделиться макетом и активами между двумя отдельными приложениями rails?

В настоящее время я переношу устаревшее приложение Rails 2.xx на Rails 3.2. Я делаю это, разбивая определенные части монолитного приложения на небольшие специализированные приложения. Моя проблема заключается в дублировании кода. Меньшие приложения будут использовать один и тот же код на стороне клиента для общего макета, javascript и css. Как мне упаковать макет и код на стороне клиента, чтобы их можно было совместно использовать между отдельными автономными приложениями? По моему первоначальному предположению, это можно сделать с помощью монтируемого движка. Но я не уверен, что это перебор.


person Jim Jeffers    schedule 16.04.2013    source источник
comment
Подмодуль git или движок в порядке   -  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". Запустите плагин команды rails new PigriderLayout --mountable -d mysql, чтобы создать новый проект движка. Здесь я использую -d mysql, потому что я использую MySQL в качестве базы данных. Вы можете изменить его, чтобы он соответствовал вашей собственной базе данных, и не забудьте добавить соответствующий гем базы данных в Gemfile. Я поместил драгоценный камень «mysql2», «0.3.11» в свой Gemfile.

  2. Создайте контроллер для всего содержимого общего макета. Запустите эту команду. Rails сгенерирует основной контроллер globalLayout aboutUs contactUs. Здесь у меня есть три действия в этом главном контроллере. Затем отредактируйте файл config/routes.rb, пусть он выглядит так:

    PigriderLayout::Engine.routes.draw do
    match "AboutUs"=>"main#aboutUs", :as=>:aboutUs
    match "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