Рубрика «ruby» - 51

imageДанный пост является ответом на пост "Почему люди выбирают PHP, или почему миллиарды мух могут ошибаться". Надеюсь, мне удастся развеять миф о несостоятельности платформ вроде Ruby и Python, который активно распространяется PHP разработчиками, причем разработчиками т.с. нижнего сословия, которые кроме PHP больше ничего не видали. Конкретно в данной статье я формате вопрос-ответ расскажу о том, почему Ruby и Rails — реальные игроки, почему они популярны и можете ли вы их использовать для построения собственного бизнеса в интернете.

Читать полностью »

А чтобы тестировать не отходя от кассы нужен фреймворк который внедряется в код
но никак не влияет на его работу.
Именно это делает Spine — позволяет писать тесты рядом с кодом никак не влияя на работу приложения.

Почему Spine?
Потому что «Specs Inline» и потому что(imho) для рационального ПО, тесты играют роль позвоночника.

Многим это статья может показаться повтором и они будут отчасти правы,
так как данная статья основана на пятой части знакомства с Presto.
А сам Spine вырос из и стал на замену PrestoTest фреймворка.

И зачем повторять то что уже написано?
Просто Spine существенно отличается от PrestoTest и соответственно данная статья тоже отличается от предыдущей, процентов на 80.
Да и представлять новый гем в пятой части знакомства с Presto как-то не корректно.

И да, статья не претендует на большие плюсы. Если вам данная методология не по вкусу,
минусовать не зачем, просто игнорируйте её и используете ваш любимый тест-фреймворк. Спасибо.

Мотивация:

  1. Визуальный контакт. Я хочу писать спецификации одновременно с кодом
    и чтобы они физически находились рядом, в том же файле или папке, но никак не в амбаре.
  2. Простые вещи должны остаться простыми.
    foo.should == bar никак не заменит foo == bar
  3. Я не хочу ни запоминать список синтетических заменителей простых вещей
    ни работать с документацией под рукой.
  4. Никаких хаков. Тестируемые объекты и базовые классы Ruby должны остаться в
    первоначальном состоянии.

Читать полностью »

На днях нужно было построить биндинги к библиотеке libftdi, которая обеспечивает взаимодействие с чипами FTDI, которые позволяют создавать различные USB-устройства.

Для создания биндингов я выбрал расширение FFI, которое позволяет загружать динамические библиотеки и строить биндинги к ним.

У FFI есть несколько достоинств, которые сыграли в его пользу:

  • Поддержка интерпретаторов MRI Ruby 1.9, MRI Ruby 1.8, JRuby, поддержка платформы Windows, ограниченная поддержка Rubinius;
  • Отсутствие необходимости компиляции биндингов;
  • Удобный язык описания биндингов.

Репозиторий биндингов для Ruby.Читать полностью »

image Взаимодействие с браузерами никогда не было работой для слабонервных: около полудюжины различных API, различные механизмы IPC, и разные возможности у разных поставщиков. Такие проекты, как WebDriver, пытаются абстрагироваться от этой сложности, к тому же в Сети можно найти десятки других «безголовых» драйверов, использующих WebKit или иные движки. В настоящее время в работе даже находится спецификация W3C на WebDriver.

Инструментирование Google Chrome

Тем не менее, в то время, как создание общего решения является сложной задачей, оказалось, что инструментирование Chrome очень просто, — как я недавно обнаружил при исследовании некоторых вопросов, связанных с сетевыми задержками. Начиная с 18 версии, Chrome теперь поддерживает протокол удалённой отладки v1.0, который предоставляет все возможности браузера с помощью обычного WebSocket!

/Applications/Path To/Google Chrome --remote-debugging-port=9222 # OSX
$> curl localhost:9222/json

[ {
   "devtoolsFrontendUrl": "/devtools/devtools.html?host=localhost:9222&page=1",
   "faviconUrl": "",
   "thumbnailUrl": "/thumb/chrome://newtab/",
   "title": "New Tab",
   "url": "chrome://newtab/",
   "webSocketDebuggerUrl": "ws://localhost:9222/devtools/page/1"
} ]

Читать полностью »

Подкаст

http://ruby.rpod.ru/273046.html

Новости

Специальный гость

Леонид Никаноров

Читать полностью »

Resque — ruby-библиотека для создания фоновых задач, составления очередей таких задач и их последующего выполнения. Задачи могут быть любым ruby-классом или модулем, содержащим метод perform. В ruby-сообществе Resque пришел на смену Delayed Job (не знаю, кстати, почему проект перестал развиваться, весьма удобная была вещь на мой взгляд) и обладает большим количеством различных преимуществ, таких как разделение задач по разным машинам, приоритеты задач, устойчивость к разным утечкам памяти и еще, и еще, и еще. На этом вступление для тех, кто не может самостоятельно перевести первый абзац из README прошу считать законченным.

В данной статье будет показано как использовать resque и resque-scheduler в rails-приложении.
Читать полностью »

О том, куда пристроить левое полушарие вашего ITmozg'а.

Left brain needed
Печатная реклама «Left Brain Right Brain, Einstein» принадлежит Shalmor Avnon Amichay/y&r Interactive Tel Aviv
Читать полностью »

Не так давно апологет ООП, автор «манифеста Agile», человек, сформулировавший принципы SOLID, Роберт Мартин сказал, что Ruby может умереть.

Роберт Мартин известен своими книгами (к примеру, выдающаяся «Rapid Software Development», которую я ставлю выше «Рефакторинга» Фаулера в личном top50 книг) и богатым вкладом в разработку ПО.

В одной из своих лекций он рассказывает о холиваре 70-80 годов прошлого века. В те годы smalltalker'еры противопоставляли себя C++ программистам, и не писали «быдлософт» (ERP, CMS). Потому что считали свой язык очень мощным и избранным.
Читать полностью »

После четырех лет разработки, 31 марта этого года по результатам голосования (пресс-релиз на японском) Ruby был принят как стандарт ISO/IEC 30170.

Стандарт имеет статус 60.00, что по классификации ISO означает «в публикации».
Читать полностью »

После четырех лет разработки, 31 марта этого года по результатам голосования (пресс-релиз на японском) был принят стандарт ISO/IEC 30170 на язык Ruby.

Стандарт имеет статус 60.00, что по классификации ISO означает «в публикации».
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js