Грейп что это
Перейти к содержимому

Грейп что это

  • автор:

Вы отправили слишком много запросов, поэтому ваш компьютер был заблокирован.

Для того, чтобы предотвратить автоматическое считывание информации с нашего сервиса, на Linguee допустимо лишь ограниченное количество запросов на каждого пользователя.
Пользователям, браузер которых поддерживает Javascript, доступно большее количество запросов, в отличие от пользователей, чей браузер не поддерживает Javascript. Попробуйте активировать Javascript в настройках вашего браузера, подождать несколько часов и снова воспользоваться нашим сервером.
Если же ваш компьютер является частью сети компьютеров, в которой большое количество пользователей одновременно пользуется Linguee,сообщитеоб этом нам.

Grape: не рельсами едиными

В этом посте я хотел бы познакомить вас с Grape — веб-фреймворком, написанным на ruby, предназначенным для быстрой и удобной разработки API, а также немного порассуждать о судьбе Rails в свете последних тенденций в веб-разработке.

Ruby = Ruby On Rails

Как-то так сложилось, что при упоминании ruby в качестве средства веб-разработки (да и просто в качестве скриптового ЯП) передо многими людьми, имеющими некоторое отношение к этой самой веб-разработке, в голове возникает если не логотип с пресловутыми белыми рельсами на красном фоне, то магическое словосочетание Ruby On Rails уж точно.
Я не берусь спорить, хорошо это или плохо — эта статья не для спора. Одно могу сказать с уверенностью — RoR оказал огромное влияние на развитие веб-фреймворков в целом, а этот вклад переоценить крайне трудно.

НО

Но жизнь не стоит на месте.
Веб становится динамичным, все большее и большее значение приобретают мобильные приложения, пользователю нужно потреблять контент «не отходя от кассы», то есть с экрана своего айфона, гугл нексуса, хуайвэя, впиши_название_своего_телефона.
Да и сами сайты нуждаются в качественно новых подходах к организации пользовательских взаимодействий и подаче контента.
AngularJS, Ember, Meteor.js, Derby.js — технологии, предвосхищающие очередной прорыв в сайтостроении, который можно сравнить с «изобретением» AJAX в старые добрые времена.
Ruby-разработчикам нужно мощное и в то же время легкое для освоения средство для разработки API, которым когда-то стали RoR для обычных сайтов.

Давайте уже к делу!
  1. DSL, заточенный под описание API
  2. версионирование API из коробки
  3. параметризация методов со встроенной валидацией
  4. автоматическая генерация OPTIONS (кто встречался с CORS — оценит)
  5. прозрачная работа с форматами API
  6. встроенный DSL для документирования
Code time

Для начала приведу пример простого приложения, которое по адресу /hello/world.json вернет нам

source 'https://rubygems.org' gem 'grape', github: 'intridea/grape' gem 'rack', '~> 1.5.2' gem 'thin', '~> 1.6.2' 

hello_world.rb

require 'grape' class HelloWorld < Grape::API format :json namespace :hello do get :world do end end end 
require_relative 'hello_world' run HelloWorld 

На моем i5 c 16 Гб памяти и HDD это приложение стартует где-то за 400-700 мс. Вот список используемых гемов:

Using i18n 0.6.11 Using json 1.8.1 Using minitest 5.4.1 Using thread_safe 0.3.4 Using tzinfo 1.2.2 Using activesupport 4.1.6 Using descendants_tracker 0.0.4 Using ice_nine 0.11.0 Using axiom-types 0.1.1 Using builder 3.2.2 Using coercible 1.0.0 Using daemons 1.1.9 Using equalizer 0.0.9 Using eventmachine 1.0.3 Using hashie 3.3.1 Using multi_json 1.10.1 Using multi_xml 0.5.5 Using rack 1.5.2 Using rack-accept 0.4.5 Using rack-mount 0.8.3 Using virtus 1.0.3 Using grape 0.9.1 from git://github.com/intridea/grape.git (at master) Using thin 1.6.2 

Как вы могли заметить, в Grape есть чудесная штука, которая называется namespace. Она же group, resource, resources, segment — все для удобства чтения кода.
При этом она может использоваться без параметров. Казалось бы, зачем? А вот вам пример:

namespace :authorized do before < authorize! >get :some_secret_data . end group do before < authorize! >get :some_secret_data . end 

Это как в фильме — «все что случилось в Лас-Вегасе — остается в Лас-Вегасе».
Внутри групп, равно как нэймспейсов, вы можете определять before и after блоки, которые будут выполняться только для роутов, указанных в данных группах (и глубже).

Вот пример, демонстрирующий использование параметров:

params do requires :first_name, type: String requires :last_name, type: String optional :birth_date, type: DateTime end post :register do . end 

Как по мне, так понятно без слов. Управление в роут даже не попадет, если с запросом не будут переданы параметры, которые удовлетворяют описанным условиям. Самое чудесное, что это все с минимальными модификациями можно использовать для документирования API. Например:

desc 'User signup' params do requires :first_name, type: String, desc: 'First name' requires :last_name, type: String, desc: 'Last name' optional :birth_date, type: DateTime, desc: 'Date of birth' end post :register do . end 

Убиваем сразу целую охапку зайцев — код документирован на месте, подключив grape-swagger получаем swagger-совместимую документацию. Изменили код — изменилась документация.

Одной из многих чудесных штук, которые меня покорили в Grape, является mount. Позволяет примонтировать ранее описанный API в новое место:

class Mount < Grape::API get :mounted do end end 

mount.rb

require 'grape' require_relative 'mount' class HelloWorld < Grape::API format :json namespace :hello do mount Mount get :world do end end end 

Как мы все уже поняли, наш роут из класса Mount станет доступен по адресу /hello/mounted.json

«Меня терзают смутные сомнения. »

Само собой, объема среднестатистической статьи, которая не вызовет у хабражителя стойкого зевотного рефлекса, вряд ли хватит, чтобы рассказать о всех плюсах и минусах фреймворка. Моей задачей в первую очередь было вызвать в вас интерес — документация у проекта неплохая, трудностей с дальнейшим изучением возникнуть не должно.
Также на гитхаб-страничке можно найти перечень гемов, которые можно использовать совместно с grape.

Эпилог

До недавнего времени у проекта была небольшая проблема, связанная с автоматической перезагрузкой измененного кода в dev-режиме. Все Rails-разработчики к этому привыкли и на мой взгляд это must have feature. В issues на гитхабе эта проблема была озвучена несколько раз и вроде предлагались какие-то решения на Rack::Reloader и для случаев использования совместно с Rails.
Я позволю себе упомянуть свое собственное решение, которое увидело свет буквально пару недель назад, а именно гем grape-reload, предназначенный для использования в plain-rack стеках.
Для grape версии 0.9.0 и ранее можно использовать версию гема 0.0.3, для более поздних и master-ветки фреймворка используйте master-ветку репозитория гема.

Если вам будут интересны дальнейшие статьи, посвященные данному фреймворку — не забудьте упомянуть об этом в комемнтариях. Всем ruby, посоны!

P.S. В ближайшее время напишу статью по созданию API для todo-листов, с использованием БД. Допускаю, что из данной вводной статьи непонятно, в чем отличие этого фреймворка от Rails и почему я не сравниваю его с Sinatra.
Также постараюсь в следующей статье сделать бенчмарк приложения на ActiveSupport::Metal и Grape.

Русский править

От англ. grapefruit «грейпфрут», из grape «виноград» + fruit «фрукт»; плоды грейпфрута часто собираются в грозди, напоминающие формой грозди винограда. Англ. grapefruit — с 1814 г.

Фразеологизмы и устойчивые сочетания править

Перевод править

Болгарский править

Морфологические и синтаксические свойства править

Существительное, мужской род.

Произношение править

Семантические свойства править

Значение править
  1. грейпфрут (аналогично русскому слову) ◆ Отсутствует пример употребления (см. рекомендации ).
Синонимы править
Антонимы править
Гиперонимы править
Гипонимы править

Родственные слова править

Ближайшее родство

Этимология править

Происходит от англ. grapefruit «грейпфрут», из grape «виноград» + fruit «фрукт»; плоды грейпфрута часто собираются в грозди, напоминающие формой грозди винограда. Англ. grapefruit — с 1814 г.

Фразеологизмы и устойчивые сочетания править

Украинский править

Морфологические и синтаксические свойства править

Произношение править

Семантические свойства править

Значение править
  1. грейпфрут (аналогично русскому слову) ◆ Отсутствует пример употребления (см. рекомендации ).
Синонимы править
Антонимы править
Гиперонимы править
Гипонимы править

Родственные слова править

Ближайшее родство

Этимология править

Происходит от англ. grapefruit «грейпфрут», из grape «виноград» + fruit «фрукт»; плоды грейпфрута часто собираются в грозди, напоминающие формой грозди винограда. Англ. grapefruit — с 1814 г.

Грейп что это

Происхождение / Регионы произрастания

Грейпфрут выведен на карибском острове Барбадос, где он был обнаружен как продукт случайного скрещивания двух видов, сладкого апельсина и помело. Это – цитрусовый фрукт, также называемый «запретным фруктом». Грейпфрут приобрел широкую популярность благодаря экспорту испанскими моряками. Под впечатлением его освежающего, сладкого вкуса фермеры в американском штате Флорида инициировали контролируемое выращивание этого экзотического фрукта. Сегодня грейпфруты выращивают почти во всех субтропических регионах мира, хотя наибольшее количество приходится на плантации во Флориде, Калифорнии и Техасе.

Описание

Грейпфруты растут среди густой листвы вечнозеленого дерева из семейства Рутовых растений (лат. Rutaceous), которое часто вырастает до 15 метров в высоту. Название «грейпфрут» происходит от того факта, что ярко-желтые плоды созревают подобно винограду (англ. «grape») в плотно скученных гроздьях. Деревья особенно привлекательны в цвету, когда их сияющие белые цветы излучают приятный сладкий аромат.

Фрукты

Одно название, но много разных сортов: существует около 20 разных видов грейпфрута, каждый из которых имеет свой отличительный внешний вид и вкус. В зависимости от сорта, цвет мякоти варьируется от светло-желтого до рубиново-красного. Производители соков обычно выбирают грейпфруты со светлой мякотью, прежде всего из-за их освежающего сладко-терпкого аромата. Спелые грейпфруты имеют размер от 10 до 15 см в диаметре и имеют ярко-желтую кожуру с крупными порами. Готовый к употреблению грейпфрут поддается легкому выжиму, но не теряет своей формы.

Вкус

Свежие, терпкие, сладкие и кислые – грейпфруты предлагают широкий спектр вкусов, что делает их популярными ингредиентами в легких фруктовых салатах, фруктовых соках и других фруктовых напитках. Грейпфрут можно есть ложкой прямо из кожуры, а его тонкий, терпкий вкус особенно освежает в жаркую пору. Употребляемый в виде слегка охлажденного сока, грейпфрут предлагает здоровый заряд энергией – прекрасный способ начать день!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *