The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Представлен Saint, инструмент для быстрого создания интерфейсов к БД

18.01.2012 23:11

В рамках проекта Saint подготовлен инструментарий, который позволяет быстро и просто генерировать web-интерфейсы для управления данными в DataMapper ORM, путем создания каркаса на языке Ruby. Saint позволяет создавать любые HTML-поля на чистом Ruby, поддерживает любые типы ассоциирования таблиц, комплексные фильтры, встроенный файловый менеджер и другие полезные функции. Основная цель Saint - максимально упростить управление контентом определённых таблиц БД. Код проекта распространяется под лицензией BSD. Пример интерфейса, созданного на основании простого 100-строчного скрипта, можно оценить на данной странице.

Ниже приведён пример развёртывания административного интерфейса "в два клика". Для этого понадобиться Ruby 1.9.2 (или выше) и доступ к любому SQL-серверу, поддерживаемому в DataMapper (MySQL, SQLite, PostgreSQL и т.д.).

Для начала устанавливаем Saint:


   $ sudo gem install saint

Потом создаём модель (на данный момент Saint поддерживает только DataMapper ORM):


   class PageModel
       include DataMapper::Resource
       property :id, Serial
       property :name, String
   end

Дальше, создаём интерфейс:


   class Page
       include Saint::Api
       http.map :pages
       saint.model PageModel
       saint.column :name
   end

Теперь надо лишь запустить приложение. Стоит отметить что Saint построен на основе фреймворка Presto, поэтому создаём приложение, монтируем в него Saint-интерфейс и запускаем:


   app = Presto::App.new
   app.mount Page
   app.run

Данный интерфейс является демонстративно тривиальным, и позволят лишь создавать/редактировать/удалять объекты лишь одной таблицы БД. Но добавлять новые таблицы довольно просто и легко, так что можно довольно быстро построить интерфейс определённой сложности.

  1. Главная ссылка к новости (http://saintrb.org/...)
Автор новости: slivu
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/32841-saintrb
Ключевые слова: saintrb, ruby, database
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (54) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, angra (ok), 00:50, 19/01/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    По описанию похоже на переизобретение недоPHPMyAdmin на руби.
     
     
  • 2.2, slivu (?), 01:10, 19/01/2012 [^] [^^] [^^^] [ответить]  
  • +2 +/

    не совсем ...
    Данный инструментарий упрощает жизнь веб-разработчикам, позволяя  быстро и эффективно создавать админ интерфейсы.
    Аналог ActiveAdmin, но свободен от рельсов.
     
     
  • 3.16, Аноним (-), 19:48, 19/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > Данный инструментарий упрощает жизнь веб-разработчикам, позволяя  быстро и эффективно
    > создавать админ интерфейсы.
    > Аналог ActiveAdmin, но свободен от рельсов.

    А как с его помощью можно создать не проект с нуля, а именно админ-интерфейс к одной из таблиц в существующей бд sqlite?
    Хоть с рельсами, хоть без :)

     
     
  • 4.23, slivu (?), 20:23, 19/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    >> Данный инструментарий упрощает жизнь веб-разработчикам, позволяя  быстро и эффективно
    >> создавать админ интерфейсы.
    >> Аналог ActiveAdmin, но свободен от рельсов.
    > А как с его помощью можно создать не проект с нуля, а
    > именно админ-интерфейс к одной из таблиц в существующей бд sqlite?
    > Хоть с рельсами, хоть без :)

    Очень просто.

    Устонавливаем Saint:

    $ gem install saint

    Создаём DataMapper модель:

    class PageModel
        include DataMapper::Resource
        property :id, Serial
        property :name, String
    end

    Создаём админ интерфейс.

    class Page
        include Saint::Api
        http.map :pages
        saint.model PageModel
        saint.column :name
    end

    Запускаем админ интерфейс.

    app = Presto::App.new
    app.mount Page
    app.run

    Ставим модель, интерфейс и инициализатор приложения в файл app.rb и запускаем:

    $ ruby app.rb

     
     
  • 5.24, Аноним (-), 20:24, 19/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    А где здесь указывается какую таблицу из моей бд мы админим?
     
     
  • 6.25, slivu (?), 20:37, 19/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > А где здесь указывается какую таблицу из моей бд мы админим?

    Saint не работает на прямую с БД, а обращается к таблицам через ORM.
    Связка с таблицой здесь:
    class PageModel
        include DataMapper::Resource
        property :id, Serial
        property :name, String
    end

    Это не  phpMyAdmin.

    Это утилита для веб-сайтов.

    [[http://saintrb.org/demo/  Здесь админ интерфейс]] для написания которого потребовалось всего 94 строк чистого Ruby


     
     
  • 7.30, Аноним (-), 21:37, 19/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > Saint не работает на прямую с БД, а обращается к таблицам через
    > ORM.
    > Связка с таблицой здесь:
    > class PageModel
    >     include DataMapper::Resource
    >     property :id, Serial
    >     property :name, String
    > end
    > Это не  phpMyAdmin.
    > Это утилита для веб-сайтов.

    позволяющая "быстро и просто генерировать  web-интерфейсы для управления данными в произвольных таблицах БД" - вот именно это я и пытаюсь понять.

    Есть у меня таблица в моей sqlite БД. Как теперь мне "быстро и просто" сделать к ней веб-интерфейс для управления данными?

    Есть пример где берётся таблица такая-то, с вот такими-то полями и затем к ней генерируется этот самый интерфейс для управления?
    Хоть на чистом руби, хоть на грязном :)

    Беглый просмотр документации такого к сожалению не выявил.

     
     
  • 8.32, slivu (?), 22:36, 19/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    gt оверквотинг удален как обычно делается для веб-сайтов, вам нужно сначала со... текст свёрнут, показать
     
     
  • 9.33, Аноним (-), 22:49, 19/01/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Понятно То есть в описании следовало указать быстро и просто генерировать web... текст свёрнут, показать
     
     
  • 10.34, kuraga (ok), 22:56, 19/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    А что можно сократить в вышеизложенном коде Разве что сделать автоматическую ге... текст свёрнут, показать
     
     
  • 11.42, Аноним (-), 11:00, 20/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Именно это я и понимаю под бытро и просто Есть нечто, что подобное умеет А т... текст свёрнут, показать
     
     
  • 12.43, kuraga (ok), 11:05, 20/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Согласен, согласен ... текст свёрнут, показать
     
     
  • 13.48, slivu (?), 14:29, 20/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    вы действительно ставите под сомнение целесообразность ORM и предпочитаете работ... текст свёрнут, показать
     
     
  • 14.49, Аноним (-), 19:44, 20/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Именно так - работая напрямую с селектом я уменьшаю объём кода - нет нужды дубли... текст свёрнут, показать
     
  • 13.51, Аноним (-), 19:54, 20/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Жаль что с автоматизацией не вышло Ну раз уж всё-равно придётся писать селекты ... текст свёрнут, показать
     
     
  • 14.54, kuraga333 (?), 01:11, 22/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Поверьте, руби того стоит ... текст свёрнут, показать
     
  • 10.35, slivu (?), 23:01, 19/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    обязательно свяжусь с модами с просьбой под-корректировать топик http datamap... текст свёрнут, показать
     
     
  • 11.41, Аноним (-), 10:57, 20/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    То ли я не так чего понял, то ли DM это сплошной boilerplate - указываю какую ис... текст свёрнут, показать
     
     
  • 12.46, slivu (?), 14:03, 20/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    тогда, для начала вам надо вникнуть в суть ORM http martinfowler com eaaCatal... текст свёрнут, показать
     
     
  • 13.50, Аноним (-), 19:49, 20/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Вник Получилось что ОРМ мне не нужен ибо переделывать ОРМ-модель к тому же бес... текст свёрнут, показать
     
  • 5.36, all_glory_to_the_hypnotoad (ok), 00:03, 20/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    ну и что это, млять, не тоже самое что делается в в других аналогчных фреймворках? В общем эта, а кто тут раздаёт права плоунам новости постить?
     
     
  • 6.37, kuraga (ok), 00:07, 20/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > ну и что это, млять, не тоже самое что делается в в
    > других аналогчных фреймворках? В общем эта, а кто тут раздаёт права
    > плоунам новости постить?

    И что? Когда город новый образуется - тоже клоунство?

     
     
  • 7.38, Аноним (-), 02:57, 20/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Если пришел клоун и сказал "теперь считаем что есть город" город от этого не появляется, а клоун менее клоуном не становится.
     
     
  • 8.44, kuraga (ok), 11:05, 20/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Тут, однако, городочек явно появился - ... текст свёрнут, показать
     
  • 3.17, all_glory_to_the_hypnotoad (ok), 19:54, 19/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    слушай, чего сейчас только не позволяет это делать. В общем, ещё один велосипед на большой свалке.
     
     
  • 4.26, slivu (?), 20:50, 19/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > слушай, чего сейчас только не позволяет это делать. В общем, ещё один
    > велосипед на большой свалке.

    Согласен, алтернатив много.
    Но ведь веб-разработчик не скаже клиенту - вот тебе phpMyAdmin(или ApEx) редактируй себе на здоровье :)

    А создаст админ по адресу www.customers-mega-site/admin/  с паролем и приятным интерфейсом, правильно?
    Вот Saint это и позволяет делать быстро и эффективно.


     
     
  • 5.31, Аноним (-), 21:43, 19/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > Согласен, алтернатив много.

    Можно ссылки на самые удобные из них?
    А то с $subj пока не сростается, вдруг с альтернативами больше повезёт.

     

  • 1.3, Anonymouse (?), 03:08, 19/01/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    И чо? Ну ну правда - есть ли хоть один из живых веб-фреймворков который этого не умеет? Django, WebPy - так уж точно за другие пусть говорят кто их щупал.


    PS: Рубисты как обычно изобрели велик и радостно всем об этом поведали :)

     
     
  • 2.4, kuraga (ok), 11:01, 19/01/2012 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Рубисты не изобретают велик, они изобретают то, чего изобрести (читай: реализовать) еще не успели. И делают это явно умнее пыхпыхников.
     
     
  • 3.7, angra (ok), 14:40, 19/01/2012 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ну не знаю. Судя по примерам и тексту новости это тупой доступ к базе, для которого еще и "код" зачем то писать надо. PHPMyAdmin дает тоже самое, только с большими возможностями и без ручного написания "кода". Ну и не могу не отметить, что в перловых ORM такой "код" пишется автоматически.
     
     
  • 4.8, slivu (?), 14:55, 19/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > Ну не знаю. Судя по примерам и тексту новости это тупой доступ
    > к базе, для которого еще и "код" зачем то писать надо.
    > PHPMyAdmin дает тоже самое, только с большими возможностями и без ручного
    > написания "кода". Ну и не могу не отметить, что в перловых
    > ORM такой "код" пишется автоматически.

    это ведь не аналог phpMyAdmin!
    это утилита для развёртывания админ интерфейс-ов для веб сайтов, призвана упростить работу веб-разработчикам.

     
  • 4.11, kuraga (ok), 15:17, 19/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > Ну не знаю. Судя по примерам и тексту новости это тупой доступ
    > к базе, для которого еще и "код" зачем то писать надо.
    > PHPMyAdmin дает тоже самое, только с большими возможностями и без ручного
    > написания "кода". Ну и не могу не отметить, что в перловых
    > ORM такой "код" пишется автоматически.

    В рельсовых тоже. Я писал не про этот продукт, а про рубистов в целом. К коим я отношусь год как. Просто было бы удобно, если все было бы на Ruby...

     
  • 4.12, Аноним (-), 18:38, 19/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Это в каких например?
     
     
  • 5.13, kuraga (ok), 18:42, 19/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > Это в каких например?

    Что каких? Инструментов? Смысл в том, чтобы не держать на серваке php, java, perl, python и прочее... Не углубляться в них. Знать только те ИНСТРУМЕНТЫ, которыми пользуешься. И C/C++, скриптовой язык - Ruby, в данном случае. Но это так, утопия...

     
  • 5.14, kuraga (ok), 18:46, 19/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > Это в каких например?

    Или в каких ORM? ActiveRecord, хотя мог неправильно понять постера.

     
     
  • 6.15, Аноним (-), 19:46, 19/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Именно!
    Раз уж "в перловых ORM такой код пишется автоматически", то хотелось бы увидеть пример этого самого автоматического написания.
    В идеале - как мне с минимальными усилиями "автоматически написать" веб-морду для изменения\добавления нескольких полей в одной из таблиц существующей sqlite db.
     
     
  • 7.20, kuraga (ok), 20:03, 19/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > Именно!
    > Раз уж "в перловых ORM такой код пишется автоматически", то хотелось бы
    > увидеть пример этого самого автоматического написания.
    > В идеале - как мне с минимальными усилиями "автоматически написать" веб-морду для
    > изменения\добавления нескольких полей в одной из таблиц существующей sqlite db.

    Ну значит неправильно понял. "Код пишет автоматически" - какой код, вопрос...

     
  • 7.21, slivu (?), 20:04, 19/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Saint не интегрируется напрямую в ORM, так как спроектирован как веб-интерфейс для разных ORM.
    На данный момент поддерживается только DataMapper и ведётся работа над Sequel адаптером.
    ActiveRecord тоже входит в планах.

    Цена поддержки разных ORM не так уж велика - нужно просто указать модель и декларировать редактируемые поля.
    Ну а дальше уже можно декларировать ассоциации и фильтры.

     
  • 7.39, angra (ok), 07:19, 20/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Ну посмотри на DBIx::Class. В одну консольную команду получаешь готовые классы для всех своих таблиц, то бишь большую часть 100 строчного кода из ссылки в статье. Для sqlite есть простенький ORLite. Ну а отображение ORM в веб это уже ручками писать надо, так как именно там вся логика и как следствие ценность программы. Если же тебе нужно только  просмотр/редактирование таблиц без всякой логики, как в saint, то ставишь PHPMyAdmin/phpSQLiteAdmin/итд и ничего писать вообще не надо.
     
     
  • 8.40, Аноним (-), 10:50, 20/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Насколько я понял из документации ORLite и DBIx Class это как раз аналоги DataM... текст свёрнут, показать
     
  • 8.47, slivu (?), 14:15, 20/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    уважаемый angra, вы никак не вникли в суть Saint а суть именно в том чтобы соз... текст свёрнут, показать
     
     
  • 9.52, angra (ok), 19:57, 20/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Покажите мне пример на этом saint позволяющий из одного datetime поля в БД сдела... текст свёрнут, показать
     
     
  • 10.53, slivu (?), 02:03, 21/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    как раз сейчас ведётся работа над автоматизацией Date Time columns, которые буду... текст свёрнут, показать
     

  • 1.5, trdm (ok), 13:49, 19/01/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >> В рамках проекта Saint подготовлен инструментарий, который позволяет быстро и
    >> просто генерировать web-интерфейсы для управления данными в произвольных
    >> таблицах БД, путем создания каркаса на языке Ruby

    Аналог 1С-ного конфигуратора?
    А для php есть такое?

     
     
  • 2.6, Аноним (-), 14:19, 19/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Есть автогенерация админки в symfony
     
     
  • 3.9, slivu (?), 14:59, 19/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > Есть автогенерация админки в symfony

    Saint ничего не генерирует.
    всё строиться "на лету", без генерации каких-либо артефактов.

     
     
  • 4.18, Аноним (-), 20:01, 19/01/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Эта уита лишь сейчас в 2012м, стала аналогом давно написанного ApEx - бывшей HTMLDB (гуглить до просветления).
     
     
  • 5.19, Аноним (-), 20:02, 19/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > Эта уита лишь сейчас в 2012м, стала аналогом давно написанного ApEx -
    > бывшей HTMLDB (гуглить до просветления).

    Причем уевым аналогом. ApEx позволяет строить приложения любой сложности. И уже давно позволяет!

     
     
  • 6.29, slivu (?), 21:01, 19/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    >> Эта уита лишь сейчас в 2012м, стала аналогом давно написанного ApEx -
    >> бывшей HTMLDB (гуглить до просветления).
    > Причем уевым аналогом. ApEx позволяет строить приложения любой сложности. И уже давно
    > позволяет!

    согласен, ApEx рулит!

    но скажем клиент заказал веб-сайт.
    вы ведь не "пошлёте" его добавлять контент через ApEx :)
    а создадите красивый админ для сайта которым клиент будет доволен.
    и чтобы не писать HTML и CRUD, вы просто говорите Saint-у что надо редактировать и как,
    и он создаёт полно-функциональный админ за вас.

     
  • 2.10, slivu (?), 15:00, 19/01/2012 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >>> В рамках проекта Saint подготовлен инструментарий, который позволяет быстро и
    >>> просто генерировать web-интерфейсы для управления данными в произвольных
    >>> таблицах БД, путем создания каркаса на языке Ruby
    > Аналог 1С-ного конфигуратора?
    > А для php есть такое?

    это не Аналог 1С-ного конфигуратора.
    это аналог ActiveAdmin для веб-сайтов, только свободен от Rails.

     
     
  • 3.22, Аноним (-), 20:06, 19/01/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >>>> В рамках проекта Saint подготовлен инструментарий, который позволяет быстро и
    >>>> просто генерировать web-интерфейсы для управления данными в произвольных
    >>>> таблицах БД, путем создания каркаса на языке Ruby
    >> Аналог 1С-ного конфигуратора?
    >> А для php есть такое?
    > это не Аналог 1С-ного конфигуратора.
    > это аналог ActiveAdmin для веб-сайтов, только свободен от Rails.

    Это жалкое подобие левой руки.

     
     
  • 4.28, slivu (?), 20:55, 19/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    >>>>> В рамках проекта Saint подготовлен инструментарий, который позволяет быстро и
    >>>>> просто генерировать web-интерфейсы для управления данными в произвольных
    >>>>> таблицах БД, путем создания каркаса на языке Ruby
    >>> Аналог 1С-ного конфигуратора?
    >>> А для php есть такое?
    >> это не Аналог 1С-ного конфигуратора.
    >> это аналог ActiveAdmin для веб-сайтов, только свободен от Rails.
    > Это жалкое подобие левой руки.

    аргументы в студию пожалуйста :)

     

  • 1.27, Anonus (?), 20:52, 19/01/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Люди, сори за офтоп, но все же - посоветуйте подобное сабжу, но для C++, только в виде генератора кода согласно некого макросоподобного кода?
     
     
  • 2.45, Аноним (-), 11:44, 20/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > Люди, сори за офтоп, но все же - посоветуйте подобное сабжу, но
    > для C++, только в виде генератора кода согласно некого макросоподобного кода?

    Вряд-ли: в тексте новости ошибка. Авторы позиционируют свой проект как
    A simple backend to easily manage ORM models.
    То есть никакой работы с "таблицами бд" нет и не предполагается - это просто ошибка переводчика.
    Ну а в с++ соответственно эти самые ORM models отсутствуют насколько я знаю.

     
     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру