Рубин с рельсов

114

Иногда мне кажется, что моя компания - единственная компания в мире, использующая Ruby, но не Ruby on Rails, до такой степени, что Rails почти стал синонимом Ruby.

Я уверен, что это не совсем так, но было бы интересно услышать несколько историй об использовании Ruby без использования Rails.

JesperE
источник

Ответы:

51

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

Я настоятельно рекомендую погуглить "ruby dsl" для отличного чтения, но я хотел бы оставить вам один пост в частности. Расс Олсен написал сообщение в блоге, состоящее из двух частей, о DSL . Я видел, как он выступал с презентацией о DSL, и это было очень хорошо. Я очень рекомендую прочитать эти сообщения.

Я также нашел отличную презентацию Оби Фернандеса о Ruby DSL . Настоятельно рекомендуется к прочтению!

Sixty4Bit
источник
4
Цифровая абонентская линия на Ruby?
5
Язык домена
Sixty4Bit 02
18

Я широко использую Ruby в своей работе, и ни один из них не основан на Rails (или даже в Интернете).

Мой домен - это обычно клиентские приложения Windows (wxRuby GUI) и сценарии, автоматизирующие Excel, Internet Explorer, запросы SQL Server и генерацию отчетов (автоматизация win32ole COM). Я также использую библиотеки sqlite, pdf-writer и gruff для различных задач преобразования данных и создания графиков.

Успех Rails был большим для Ruby, но я согласен с тем, что Rails привлек столько внимания, что ценность Ruby за пределами сети часто игнорируется.

Дэвид Маллет
источник
17

В основном мы специализируемся на C ++, но мы обнаружили несколько областей, в которых Ruby оказался весьма полезным. Вот несколько:

  • Генерация кода - построено несколько DSL для генерации кода C ++ / Java / C # из отдельных входных файлов.
  • Поддержка сборки
    • скрипты для создания файлов Makefile для unix из файлов проекта Visual Studio
    • скрипты для сборки проектов и форматирования вывода для круиз-контроля
    • скрипты для запуска наших модульных тестов и форматирования вывода для круиз-контроля
    • скрипты для управления проектами и решениями Visual Studio из командной строки
  • Интеграционные тесты - мы можем проводить тесты намного быстрее и чище, используя Ruby, чем C ++.
  • Весь пакет тестирования QA написан на Ruby

Ruby - это, по сути, мой инструмент там, где это имеет смысл. И это имеет смысл во многих местах.

Аарон Хинни
источник
1
Вам следует серьезно подумать об использовании CMake для создания файлов сборки как для Unix (Makefiles), так и для Windows (Visual Studio).
JesperE 05
13

Google Sketchup использует Ruby в качестве встроенного языка сценариев. Вы можете использовать его для выполнения всевозможных задач 3D-моделирования и импорта / экспорта. Скрипт работает с бесплатной версией и даже есть достойная документация .

hyperlogic
источник
Хм, интересно. Я действительно должен попытаться найти время, чтобы поиграть со Sketchup.
JesperE
9

Ruby с расширением homebrew, написанным на C ++, выполняет всю тяжелую работу с пикселями при обработке моих фотографий. Я использовал Python + numpy, но когда делал художественные вещи , Ruby доставлял больше удовольствия. Кроме того, относительное отсутствие или меньшая зрелость хороших библиотек обработки изображений заставляет меня меньше чувствовать, что я изобретаю колеса. Я ничего не знаю о Rails, кроме того, что я о нем слышал, имею нечеткое представление о том, что это такое, и на самом деле у меня есть книга об этом (неоткрытая)

DarenW
источник
8

Мы используем Watir (библиотека Ruby) для тестирования нашего веб-приложения .net.

eljko Filipin
источник
Ватир чрезвычайно полезен. Мы также иногда используем Selenium через Ruby.
Swanand
7

Ознакомьтесь с Shoes , простым API для создания графических интерфейсов на Ruby, предназначенным для начинающих программистов.

Parappa
источник
6

Или вы можете использовать Ruby для создания музыки, как «Археоптерикс» Джайлза Боукетта. Эта презентация Джайлза об археоптериксе - одна из лучших презентаций всех времен. Я очень рекомендую это.

Sixty4Bit
источник
1
Невероятно увлекательный материал, генеративная музыка.
iono
6

RubyCocoa и MacRuby. Можно создавать полноценные приложения с графическим интерфейсом на основе Какао без Rails. И тогда вы тоже можете использовать Interface Builder.

Мэтью Шинкель
источник
6

В прошлом году я работал над музейным проектом, в котором было много Ruby. ( http: // http: //ourspace.tepapa.com/home )

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

Весь контрольный код для этой части выставки - рубиновый. Я написал интерфейсы C с рубиновыми оболочками для связи с датчиками пола и контроллерами освещения. Система запрашивает базу данных MYSQL для отображения мультимедийных файлов, а затем сообщает компьютерам в стенах воспроизводить мультимедиа через UDP.

Это самая надежная часть всей выставки.

Рубин использовался для другой основной части выставки, Стены, хотя я не имел к этому особого отношения. Большая часть графики была прототипирована на Ruby с использованием интерфейсов к OpenGL, немного Cocoa и библиотеки физики, прежде чем быть перенесена на чистый Obj-C.

Генри
источник
6

Марионетка и шеф-повар: DevOps

Я не увидел упоминания Марионетки или Шеф-повара в 30 ответах, предшествовавших моему приезду. Ruby, кажется, доминирует в текущей работе по автоматизации облачных вычислений и является базовым языком, расширением и языком шаблонов этих двух крупных игроков. Они используются в основном для распространения информации о конфигурации системы и приложений для массивов серверов и для общего управления ИТ-рабочими станциями.

Поле DevOps хорошо знакомо с Ruby. Сегодня у Perl появился конкурент. Хотя действительно простой сценарий часто все еще может быть написан непосредственно для sh(1),сложной задачи, теперь его можно выполнять на Ruby, а не на Perl.

DigitalRoss
источник
5

Единственный сайт, на котором я работал с Ruby, - это использование Rails, но я бы хотел попробовать Merb .

Помимо этого, я создаю множество небольших служебных программ на Ruby - например, приложение, которое читает RSS-каналы и импортирует новые сообщения в базу данных.

Это весело, поэтому я также пишу глупые вещи только потому, что это так быстро. Вчера я написал приложение для решения задачи Монти Холла 100000 раз, чтобы помочь другу убедить своего профессора, что переключение - правильная стратегия.

palmsey
источник
1
эй, профессор должен понимать чистую логику, стоящую за этой игрой, здесь нет необходимости в симуляциях.
vava
Мне было бы интересно увидеть ваш алгоритм.
maček 01
Если я правильно понимаю, Мерб в значительной степени был поглощен - или, по крайней мере, перекрестно оплодотворен, или как вы хотите это называть - в Rails 3.
Энди
4

Я почти оскорблен тем, что рубин - это рельсы. Это похоже на то время, когда CGI был последней тенденцией, и все считали, что если вы знаете Perl, вы должны делать это только потому, что вы программировали приложения CGI. Ruby для меня - это просто язык сценариев, хотя и не такой зрелый, как python, поэтому я несколько сожалею о том, что пришлось прыгнуть через некоторые из его обручей и недавних изменений, мне он все еще нравится и я его использую. Хотя я работаю в магазине java, и поэтому groovy - идеальный выбор для языка сценариев, я все еще использую ruby ​​дома и для выбрасывания сценариев, которые не нужны для совместного использования на работе.

Я подумывал о том, чтобы попасть в RoR из-за всей этой шумихи и о том, насколько это быстро / просто, но после просмотра рельсов я не увидел вообще ничего удивительного или хотя бы немного инновационного или быстрого в его разработке по сравнению с любым другим фреймворк. Единственное преимущество, которое я увидел, заключалось в том, что я мог писать код на Ruby, что было бы неплохо, но первоначальная настройка, обслуживание сервера и масштабирование сложнее, что сводит на нет удовольствие от кодирования на Ruby.

Zombies
источник
4

Я создал презентацию - по совпадению названную Off The Rails - для обсуждения веб-приложений на основе Rack:

https://github.com/alexch/Off-The-Rails

Репозиторий git включает слайды в формате Markdown и образец кода (в виде запущенных приложений и промежуточного программного обеспечения). Вот аннотация:

Ruby on Rails - самая популярная среда веб-приложений для Ruby. Но не только! Если вы думаете, что Rails слишком большой, или слишком самоуверенный, или что-то слишком, вы можете быть счастливы узнать о новом поколении так называемых микрофреймворков, построенных на Rack. А поскольку Rails 3 сам по себе является Rack-приложением, вам не нужно отказываться от Rails, чтобы воспользоваться преимуществами маршрутов Sinatra или API-интерфейсов Grape.

И вот несколько ссылок:

Надеюсь, что вы найдете ее полезной!

AlexChaffee
источник
4

Я в основном веб-разработчик, и я изучил Ruby для использования Rails, но мне настолько нравится этот язык, что я начал разрабатывать настольное приложение Swing на Ruby, используя JRuby и Monkeybars. Я компетентен в Java, но не очень люблю его, а Swing API ужасен, поэтому размещение Ruby на вершине было большой победой.

Марнен Лайбов-Козер
источник
3

В основном мы используем рельсы, но у нас есть много других рубиновых вещей, не относящихся к рельсам - например, автономный демон аутентификации для централизованной аутентификации пользователей и «сервер обработки изображений», который запускает произвольное количество процессов ruby ​​для параллельной обработки изображений.

Да, и не забывайте старые добрые грабли :-)

Орион Эдвардс
источник
3

Ruby также используется для настольных приложений. Особенно использование JRuby для разработки настольного приложения Swing.

user23117
источник
3

Я использовал Ruby на работе для

  • Экстрактор данных, генерирующий файлы csv из двоичного вывода.
  • Генератор файлов .ini, превращающий простой синтаксис в повторяющийся формат .ini.
  • Простой сервер TCP / IP, действующий в качестве замены для системы заказчика во время тестирования.
AShelly
источник
3

Мы используем Ruby для реализации нашего программного обеспечения для автоматизации тестирования. Сюда входит тестовая среда и код драйвера для Selenium RC, WATIR и AutoIT.

Ruby достаточно мощный, чтобы создавать комплексные приложения, которые могут взаимодействовать с инструментами тестирования, такими как Selenium или WATIR, и в то же время читать из файлов данных, взаимодействовать с удаленным пользовательским интерфейсом Windows и выполнять почти прозрачную сетевую связь. И все это при работе в Windows или Linux.

Лаконичный синтаксис делает его идеальным для чтения начинающими и неопытными программистами. Хотя его полностью объектно-ориентированный характер позволяет этим же программистам с самого начала применять хорошие (недавно изученные) объектно-ориентированные методы.

Гибкая природа синтаксиса Ruby также значительно упрощает использование и создание DSL. Это позволяет менее технически подготовленным людям привлекаться, читать и, возможно, создавать собственные тесты.

Питер
источник
Не все драгоценные камни так хорошо работают в Windows. По моему опыту, Linux - гораздо более удобная среда для запуска Ruby.
Zombies
3

Я использовал Ruby для генерации кода хранимых процедур C # и T-SQL в проекте с нестабильными требованиями. Модель данных была закодирована в файл YAML, а для классов и хранимых процедур использовались шаблоны .erb. Это также позволило получить гораздо более СУХИЕ решения, чем это было бы возможно с обычным C #, поскольку повторяющийся код мог быть выделен в один метод в генераторе кода.

domgblackwell
источник
3

Там, где я работаю, мы используем Ruby для выполнения ряда различных разовых пакетных заданий. Одним из примеров этого является работа, которая взаимодействует с сервисом Amazon S3. В то время библиотека Ruby S3 была, вероятно, самой простой из имеющихся для нас, чтобы начать работу за короткий промежуток времени.

mmacaulay
источник
3

Я написал экспертную систему обработки заказов (см. Также ответ DSL), преобразовал 100 тыс. Строк клиентского Perl примерно в 10 тыс. Строк ruby, обслуживающих десятки клиентов. Никаких веб-компонентов, никаких Rails.

mmaibaum
источник
3

Я пользуюсь веб-драйверами. ruby используется webdriver для автоматизации процесса сборки благодаря rake. см. http://code.google.com/p/webdriver/ для получения дополнительной информации.

Luc
источник
3

Хех, отличный вопрос.

Я использовал Ruby для преобразования данных об объектах аэропорта в виде электронной таблицы Excel в sqlite3 для платформы телефона Android при создании приложения для пилотов.

DigitalRoss
источник
3

Я использую Ruby с Sinatra, который намного проще, чем Rails. Я действительно использовал Rails, но только что обнаружил, что он превратился в своего рода монстра, хотя Rails по-прежнему великолепен по сравнению с веб-фреймворками, доступными для Java.

Однако главная особенность Ruby, которая мне нравится, - это eval и method_missing, которые Rails фактически использует, например, в ActiveRecord, чтобы вы могли использовать удивительные запросы «find_by-field-name-».

appshare.co
источник
3

Я использовал Ruby для большого количества внутреннего кода просто потому, что я был единственным человеком, которому было поручено это сделать, и мне нужен был хороший чистый язык, который позволял мне быть очень продуктивным и писать простой в поддержке код. Я считаю, что Ruby позволяет мне делать это проще, чем Perl и Python. Мнения других людей могут отличаться от этого, но для меня это работает хорошо.

Кроме того, мне нравится, как работают Sequel и Nokogiri. Я также какое-то время использовал ActiveRecord отдельно от Rails.

Железный Человек
источник
2

Мы используем Ruby для работы с файлами, но пока не можем включить рельсы.

FortunateDuke
источник
2

Я много профессионально использовал Ruby для быстрых сценариев для таких вещей, как перемешивание файлов. Точно так же я использовал Ruby, прежде чем вообще касался Rails.

madlep
источник
2

В Боулдере была отличная группа пользователей Ruby, которые встречались ежемесячно. Было отмечено, что Ruby действительно существует помимо использования в Rails. Обычные пользователи Ruby действительно существуют, они требуют внимания, могут показать интересные вещи и могут найти друг друга на собраниях групп пользователей.

У них также была пицца получше, чем у группы Python, которые встречались также в один и тот же день месяца. Можно выбрать только один ...

DarenW
источник
1
Ага, но группе Python лучше Py! (глупая шутка, я знаю, я знаю ...)
dguaraglia
Так смешно, я забыл посмеяться! 8P
DarenW
2

Хотя у нас есть несколько приложений Rails, мы также используем Ruby для некоторых довольно интенсивных не-веб-вещей.

У нас есть демон доставки SMS, который извлекает сообщения из очереди, а затем доставляет их, и демон обработки кредитных карт, к которому могут обращаться другие приложения, что обеспечивает централизованный контрольный журнал.

Джон Вуд
источник