2013-02-10 2 views
0

Я разработал несколько приложений в Rails, и мне нужно было разработать API. Я получил совет, чтобы построить его в Синатре, поэтому я начал изучать его.Генераторы ресурсов в Sinatra

Это казалось довольно приятным, но кажется, что в Синатре, похоже, много вещей, которые вы автоматизировали в Rails. В частности, мне, похоже, приходится писать свои ресурсы с нуля. например. Сама модель, миграция и маршруты REST.

Мне было интересно, есть ли генераторы для Sinatra, как у Rails? Или я просто должен использовать Rails, если я хочу, чтобы эти вещи были автоматизированы?

+0

Sinatra - голые кости, без генераторов. Но вы можете использовать драгоценный камень, который позволяет использовать большинство плагинов rails в любом рубиновом приложении. Не знаю, как это называется, это просто комментарий. – three

+0

нашел это: http://nicksda.apotomo.de/2012/06/using-rails-gems-like-simple_form-in-sinatra-or-anywhere/ – three

ответ

1

Отъезд sinatra-rest gem, который может быть использован для обработки RESTful маршрутов. Цитируется ниже для удобства:


[Синатра-остальное] набор шаблонов ввести RESTful маршруты в Синатры. Единственное, что вам нужно сделать - это предоставить представления. Автоматически хорошо работает для моделей на основе ActiveRecord, DataMapper или Stone.

Например, если класс вашей модели называется Person вам нужно всего лишь добавить следующую строку:

rest Person 

который добавит следующие RESTful маршруты к приложению. (Обратите внимание на плюрализацию Person до маршрутов /people/*.)

Verb Route   Controller View 
GET  /people   index  /people/index.haml 
GET  /people/new  new   /people/new.haml 
POST /people   create  → redirect to show 
GET  /people/1  show   /people/show.haml 
GET  /people/1/edit edit   /people/edit.haml 
PUT  /people/1  update  → redirect to show 
DELETE /people/1  destroy  → redirect to index 
1

Я лично не использую Sinatra, но многие отзывы, которые я получил от других разработчиков Rails, это то, что они в конечном итоге вернутся к Rails. Я уверен, что есть хорошие аргументы в пользу использования Sinatra over Rails, но если вы уже знаете Rails, и у вас нет ограничений скорости или ограничений приложения, я бы просто придерживался этого.

Другой альтернативой Sinatra является проект Rails API, который не включает в себя какую-либо часть Rails-структуры, относящуюся к представлению. Я использовал это в прошлом и мне понравилось, но было ли лучше, чем просто использовать Rails? Сложно сказать.

+0

Спасибо за ваш ответ! :) Знаете ли вы, почему они вернулись к Rails? – Karan

+0

Главным образом потому, что они продолжали добавлять все больше и больше библиотек и функций, которые уже были встроены в Rails. –

1

Вы должны указать Padrino, если у вас есть Синатра.

Padrino - это рубиновый каркас, построенный на веб-библиотеке Sinatra. Sinatra - это DSL для создания простых веб-приложений в Ruby. Padrino был создан, чтобы сделать его забавным и легким для кодирования более продвинутых веб-приложений , все еще придерживаясь духа, который делает Sinatra отличным!

Как упоминалось в Бейрлингтоне, вы можете использовать Rails API, если вы чувствуете себя как дома с Rails. Мы использовали его в последнее время с большим успехом. Мы создали простой API с бэкэндом mongo. Начинается очень быстро :)

+0

Awesome. Я рассмотрю Падрино более подробно. Я собираюсь создать front-end в Knockout.js, так что, если я переключу серверный конец на использование Node.js, он просто будет работать. Можно ли перестроить структуру Padrino, чтобы у меня была «серверная» папка и «клиентская» папка, и ясно, что сервер и клиентская сторона полностью развязаны? Я вижу, что это различие трудно увидеть в проекте Rails. Благодаря! – Karan

+0

@ Karan почему бы не построить их как два отдельных приложения для стойки? Затем они могут жить в разных папках, но запускаться в одной стойке, используя 'use' и' run'. – iain

0

Или я просто использую Rails, если я хочу, чтобы эти вещи были автоматизированы?

Если вы используете Rails, то использование Ruby - проблема, может быть. В качестве альтернативы, вы можете попробовать этот API генератор, который использует Синатра:

https://github.com/mattetti/Weasel-Diesel

Смежные вопросы