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

Привет. На хабре много обзоров различных сред разработки, но совсем мало информации про Komodo Edit и Komodo IDE.
Я пользуюсь Komodo с 2010 года и за это время вышло несколько мажорных релизов и хочу с вами поделиться кратким обзором основных возможностей.

Обзор Komodo Edit и Komodo IDE 8

Komodo Edit — это кросс-платформенный текстовый редактор, который построен на движке Mozilla, поддерживает большое количество языков. Проект является полностью открытым и распространяется под лицензией MPL (Mozilla Public License). Разработка проекта ведется на GitHub.
Как и у всех, есть авто-дополнение со справочной информацией, поддержка плагинов, макросы, сниппеты.
Главная фича, которая мне понравилась, это удаленное редактирование кода, подобно Sublime если прикрутить к нему плагины для работы по SFTP. В восьмой версии также появился визуальный скроллинг, аналогично тому, который есть в Sublime.

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

То чувство когда, чтобы скачать файлы телефон, ты пишешь свой ftp-сервер на Ruby…

Для этого нам понадобиться gem ftpd

gem install ftpd

Все просто, и ничего лишнего, маленький но храбрый ftp-сервер на Ruby

require 'ftpd'

class Driver
  def initialize(temp_dir)
    @temp_dir = temp_dir
  end
  def authenticate(user, password)
     true
  end
  def file_system(user)
    Ftpd::DiskFileSystem.new(@temp_dir)
  end
end

driver = Driver.new("/home/dsalahutdinov")
server = Ftpd::FtpServer.new(driver)
server.log = Logger.new($stdout)
server.start
puts "Server listening on port #{server.bound_port}"
gets

Исходник можно скачать по адресу: gist.github.com/dsalahutdinov/ac0e3e8b085ac8603650

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

Введение

Продолжаем тему. В данной статье задействуем несколько приемов метапрограммирования. Для наглядности напишем простую версию ORM (наподобие ActiveRecord).
Уверен, опытные разработчики Ruby не раз встречали различные приемы метапрограммирования изучая исходники gem'ов или стандартной библиотеки Ruby. ActiveRecord бесспорно использует все возможности Ruby, превращая использование сложного ORM в простой и удобный процесс.

В нашем примере реализуем простой базовый класс для всех «моделей» — очень упрощенный аналог ActiveRecord::Base, который будет предоставлять следующие возможности:
1) Новая модель добавляется наследованием от базового класса
2) Таблица именуются в базе по имени класса модели, к примеру: class Pet -> table pet; class Person -> table person (для упрощения)
3) Вставка/сохранение объекта в базе данных
4) Возможность поиска объекта по id и выборка всех объектов
5) Модель имеет атрибуты, соответствующие колонкам в таблице, а так же access-методы для данных атрибутов (для упрощения поддержка строковых и числовых значений)
6) Модель работает напрямую с адаптером mysql
Читать полностью »

Как мы боролись с проблемами производительности в «Redmine». Кто виноват и как помочь?
Конечно, статья не совсем верно названа. В чистом Redmine особо больших проблем с производительностью нет. Но мы, в процессе разработки большого количества плагинов, эти проблемы с легкостью вносили.

Поэтому, статья расскажет о том, как разобраться в чем причина медленной работы той или иной функции плагина Redmine и какие инструменты могут помочь в этом. Многие советы, естественно, могут касаться не только самого Redmine, но и Rails-приложений в целом.

Симптом у проблем с производительностью всегда один – это разгневанный пользователь, кричащий, клянущий твое ПО и возможно тебя лично.
Читать полностью »

в 10:05, , рубрики: ruby, sinatra, метки: ,

Для изучения ruby был выбран учебный проект в котором простая задача, написания тестов для web. Ввиду отсутствия знаний и опыта было решено использовать упрощенный фреймворк sinatra. Читать полностью »

Краткий обзор способов формирования JSON

На сегодняшний день в Rails имеются следующие способы сериализации объектов в JSON:

  1. Вызов to_json() напрямую.
  2. RABL
  3. Active model serializers
  4. JBuilder

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

image Более 1000 разработчиков придут в эту субботу на DevConf 2014,
уникальную конференцию которую создали сообщества разработчиков.
DevConf является результатом деятельности огромного количества профессионалов.
В организации каждого потока принимают участие уважаемые в соответствующем сообществе люди. Ни одного «пиарного» доклада за всю историю!

DevConf 2014 — уже завтра — 14 июня! Опубликована окончательная программа конференции
Читать полностью »

Не так давно я обнаружил одну интересную фичу в Руби. Мне показалась, что она может быть весьма полезной в определенных ситуациях. Тем не менее, я пришел к выводу, что этот трюк не так уж частно используется в коде, так как за многие годы программирования наткнулся я на него только сейчас. Идея в том, что мы можем дать еще один шанс коду, который привел к исключению (exception) и запустить его повторно. Давайте посмотрим, насколько легко это делается в руби.Читать полностью »

Небольшое дополнение для пользователей Mac OS X (у меня сейчас OSX 10.9.3, но будет работать и под младшие версии).
Для выполнения всех действий руководства от XakepRU в статье "Как запилить свой дешборд на все случаи жизни?" вам будет необходимо провести первоначальную настройку вашей ОС Mac OS X.

В установку OS X изначально вшит Ruby и использовать его для подобного рода проектов система просто так не даст и при попытке установки гемов будет ругаться на права записи.

Примерно так: You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory

Есть два варианта:

  • «расковырять» настройки системы и в случае неправильных действий, скажу грубо, поломать OS X. Ломать мы ничего не хотим поэтому данный вариант пропускаем и будем делать качественно.
  • установить менеджер версий Ruby, например, rbenv или RVM для установки дополнительной версии(й) Ruby, с которой вы сможете делать все, что захотите. Останавливаемся на этом варианте, буду писать про rbenv.

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

Redmine logo

Приведу кратко основное по RedMine:

  • ведение нескольких проектов;
  • система отслеживания ошибок;
  • диаграммы Ганта;
  • настраиваемые произвольные поля для инцидентов, временных затрат, проектов и пользователей;
  • лёгкая интеграция с системами управления версиями (SVN, Git, Mercurial);

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


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