ФорумПрограммированиеБольше языковRuby → Генераторы и скаффолды (scaffolds and generators)

Генераторы и скаффолды (scaffolds and generators)

  • killich

    Сообщения: 270 Репутация: N Группа: Адекваты

    Spritz Авг. 15, 2009, 8:32 п.п.

    ГЕНЕРАТОР (generator)

    Генератор - программа (скрипт), занимающаяся написанием программ (или фрагментов кода) согласно заданным входным параметрам. Поскольку абсолютное множество фрагментов ROR приложения максимально унифицированы (согласуются со стандартами ROR), то у нас появляется возможность создавать программы, которые самостоятельно будут формировать красивый рабочий код некоторых фрагментов нашего приложения.

    Так, например, большинство действий происходящих на сайте попадают в категорию CRUD (Create, Read, Update, Delete). Возьмем профайл пользователя - для него должны существовать функции - создать, читать (просмотр), обновить, удалить. Тоже самое со страницами сайта, каждая должна иметь возможность быть созданной, прочитанной, обновленной и удаленной. У данных действий совершенно аналогичный алгоритм, единственная разница - это название класса объектов, к которому алгоритм применяется (Profile и Page).

    Известны генераторы, которые по заданным именам объектов создают полностью готовые к исполнению файлы логики (функции обработчики запросов), виды отображения и прочего. Так мы можем в считанные секунды, с помощью генератора создавать очень простые, но полноценные административные web интерфейсы.

    Скаффолд, скаффолдинг (scaffold, scaffold generator)

    Скаффолд - генератор, создающий полностью готовый к использованию административный интерфейс для управления объектами БД через web-браузере.
    В качестве входных данных принимает имя Модели (класса объектов) и список полей таблицы БД с соответствующими типами данных (что бы под каждый тип данных создать соответствующий элемент ввода внутри html формы). Обеспечивает полный набор действий CRUD.

    Скаффолд-генератор воплощает в себе одну из идеологий RAILS - DRY (DON't REPEAT YOURSELF) - т.е. не повторяйся (не пиши заново свой код). Действительно, создав генератор для создания файлов с аналогичным функционалом для разных фрагментов приложения, мы во многом избавляем себя от необходимости писать одинаковый код многократно.

    Скаффолд (scaffold) - в переводе обозначает подмостки или строительные леса. Т.е. создает что-то такое, что позволяет быстро строить интерфейс.

    Ролики формата - БЛОГ НА ROR ЗА 15 МИНУТ. Основаны на методике Скаффолдов.
    Рубист с большой буквы Г. Серый кардинал кулинарного блога open-cook.ru
  • Trej Gun

    Сообщения: 5305 Репутация: N Группа: в ухо

    Spritz Авг. 15, 2009, 10:04 п.п., спустя 1 час 31 минуту 49 секунд

    killich, покажи плз генератор для создания генераторов (с)
  • killich

    Сообщения: 270 Репутация: N Группа: Адекваты

    Spritz Авг. 16, 2009, 10:30 д.п., спустя 12 часов 26 минут 56 секунд

    =)

    К сожалению отдельного генератора генераторов нет - и не по причине того, что это не нужно, а потому, что такой генератор фактически является частью генератора плагинов.

    Запустив генератор плагина вы так же получите и папку с генератором, поименованным так же как и плагин.

    генератор плагинов и генератор генераторов =) естественно не напишет для вас нужный плагин и генератор, но создаст уже готовую инфраструктуру для их создания, как то: файлы инициализации, файлы шаблонов для генерируемого кода и директории, где будет это все структурировано храниться.

    Так, Мавр.. разговор о генераторе генераторов для генерации генераторов предлагаю не начинать =)
    Рубист с большой буквы Г. Серый кардинал кулинарного блога open-cook.ru
  • Trej Gun

    Сообщения: 5305 Репутация: N Группа: в ухо

    Spritz Авг. 16, 2009, 1:42 п.п., спустя 3 часа 11 минут 37 секунд

    killich, да я ваще подъебать хотел а ты все всерьез…
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz Авг. 16, 2009, 3:19 п.п., спустя 1 час 36 минут 44 секунды

    Когда происходит генерирация, на каком этапе? Один раз при вызове "инсталлера"?
    Потом можно изменить админ-формы?
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • killich

    Сообщения: 270 Репутация: N Группа: Адекваты

    Spritz Авг. 17, 2009, 10:10 д.п., спустя 18 часов 51 минуту 4 секунды

    killich, да я ваще подъебать хотел а ты все всерьез…

    А я тупой да.. не понял .. да?! =)))
    Надеялся ты оценишь мой тонкий хуморь =)
    Спустя 224 сек.
    Когда происходит генерирация, на каком этапе? Один раз при вызове "инсталлера"?
    Потом можно изменить админ-формы?


    В любое время дня и ночи в независимости от самого приложения.
    Представь себе набор готовых утилит для своего приложения, которые облегчают тебе работу над проектом.
    Вот такие наборы утилит - оформлены в виде rake задач, которые можно писать и самому.
    rake задача - это скрипт на руби, который в некотором смысле был порожден идеей make файлов nix систем. Поэтому и называется Ruby Make - Rake
    Рубист с большой буквы Г. Серый кардинал кулинарного блога open-cook.ru
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Авг. 17, 2009, 10:22 д.п., спустя 12 минут 20 секунд

    руби только своей ОС не хватает))
    Сапожник без сапог
  • adw0rd

    Сообщения: 22959 Репутация: N Группа: в ухо

    Spritz Авг. 17, 2009, 10:34 д.п., спустя 11 минут 21 секунду

    killich, ясно, прикольно )
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • Trej Gun

    Сообщения: 5305 Репутация: N Группа: в ухо

    Spritz Авг. 17, 2009, 11:48 д.п., спустя 1 час 14 минут 30 секунд

    тонкий хуморь

    угумс
  • DarkMist

    Сообщения: 2 Репутация: N Группа: Кто попало

    Spritz Фев. 24, 2011, 1:52 п.п., спустя 556 дней 3 часа 3 минуты

    а можно пример какой нить по сложней , так в качестве учебного материала : (rails generate scaffold…)
  • killich

    Сообщения: 270 Репутация: N Группа: Адекваты

    Spritz Фев. 24, 2011, 3:41 п.п., спустя 1 час 49 минут

    http://pyha.ru/forum/topic/3276.0
    Рубист с большой буквы Г. Серый кардинал кулинарного блога open-cook.ru

Пожалуйста, авторизуйтесь, чтобы написать комментарий!