Программирование на Ruby - Новости

Настройка и деплой Rails приложений при помощи Ansible и Capistrano

Подробное руководство о том, как быстро и легко настроить сервер и задеплоить на него Ruby on Rails приложение используя Ansible и Capistrano.

http://mkdev.me/categories/arhitektura-i-devops/posts/nastroyka-i-deploy-rails-prilozheniy-pri-pomoschi-ansible-i-capistrano

Источник: rubyflow.ru

Правильный блог на Rails: sitemap, robots и rss

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

http://mkdev.me/categories/back-end/posts/pravilnyy-blog-na-rails-sitemap-robots-i-rss

Источник: rubyflow.ru

gem для работы с moysklad.ru

Наши клиенты в Киоске часто используют Мойсклад как основной источник информации о товарах.

Синхронизация данных между магазином и складом осуществляется постоянно, в обе стороны, поэтому для экономии запросов данные кешируются. Активно используются связи между обьектами, поэтому при работе с API используются полноценные модели с ассоциациями.

В общем, как вы догадались, существующие решение (точнее решение) не подошло. А у нас, в итоге. получилось нечто гораздо большее чем просто client для API, библиотека удачно себя зарекомендовала в продакшее и решено было выделить ее в отдельный opensource проект.

Делюсь: https://github.com/brandymint/moysklad

Источник: rubyflow.ru

Refile - новое решение для загрузки файлов

Refile - это новая библиотека для управления загрузкой и хранением файлов от автора знаменитой CarrierWave. Весь лучших опыт от работы над CarrierWave перенесен в Refile, так что вполне можно ожидать хороших результатов.

Возможности:

  • поддержка различных бэкендов (файловая система, S3 и тд),
  • удобная интеграция с ORM,
  • поддержка обработки файлов "налету",
  • поддержка потокового IO,
  • безпробленая прямая загрузка (включая S3).

Примеры кода и очень подробное описание вы найдете на GitHub - github.com/elabs/refile

Источник: rubyflow.ru

Ruby & Oracle

Возникают задачи, при которых необходимо работать с БД Oracle.

Это может быть работа как с основной БД (подробный туториал, англ.), так и небольшие задачи по импорту из локальной БД.

Разберем последний случай:

  1. Устанавливаем клиент (офф.документация, англ.)
    Необходимо скачать с офф.сайта несколько файлов отсюда, и распаковать в /opt/oracle. Также важно установить значение переменной окружения LD_LIBRARY_PATH.
    *В документации существует пометка, что даже для 64-битных ОС необходимо скачивать 32-битную версию. Для моего случая, это не сработало и пришлось устанавливать 64-битную версию.

  2. Установить gem install ruby-oci8

При доступности к БД Oracle, мы можем выполнить такой скрипт:

require 'oci8'
db = OCI8.new(login, password, host/db)
Post.all.each do |post|
  cursor = db.parse("INSERT INTO POST (POST_NUM, TITLE)
                    VALUES (:post_num, :title)"
)
  cursor.bind_param(':post_num', post.id)
  cursor.bind_param(':title', post.title)
  cursor.exec
end
db.commit

Небольшое замечание: в сам SQL запрос нельзя вставить значение через #{psot.id} и #{post.title}, для этого существует метод указателя :bind_param. Существуют различные способы для биндинга переменных в запрос (больше способов в документации).
Чтобы данные сохранились, необходимо выполнить db.commit.

Источник: rubyflow.ru

Как добавить заголовок к запросу Rack::Test

Райн Бигг (Ryan Bigg) написал короткий, но полезный пост о том, как установить нужный заголовок в тестах использующих Rack::Test.

Быстрый ответ выглядит так:

it "test" do
  header 'Test-Header', 'Test value'
  get '/test'
  expect(last_response.status).to eq(200)
end

Готово! Вы установили заголовок Test-Header со значением "Test value".

Немного подробнее в статье "Add header to Rack::Test request".

Источник: rubyflow.ru

transitions - еще одна реализация конечных автоматов на Ruby

Все уже знают, что такое конечные автоматы, поэтому я просто приведу пример DSL ;)

class Product
  include ActiveModel::Transitions

  state_machine do
    state :available # first one is initial state
    state :out_of_stock, :exit => :exit_out_of_stock
    state :discontinued, :enter => lambda { |product| product.cancel_orders }

    event :discontinued do
      transitions :to => :discontinued, :from => [:available, :out_of_stock], :on_transition => :do_discontinue
    end
    event :out_of_stock, :success => :reorder do
      transitions :to => :out_of_stock, :from => [:available, :discontinued]
    end
    event :available do
      transitions :to => :available, :from => [:out_of_stock], :guard => lambda { |product| product.in_stock > 0 }
    end
  end
end

Библиотека transitions имеет большое количество интересных возможностей, которые хорошо описаны в README. Смотрите все подробности на GitHub - github.com/troessner/transitions

Источник: rubyflow.ru

TheViking 1.0

TheViking - обеспечивает доступ к антиспам сервису Akismet для руби и рельсовых приложений

TheViking это репак гема Viking без поддержки сервиса Defensio (который видимо умер)

Источник: rubyflow.ru

TheActualLocales released

https://github.com/the-teacher/the_actual_locales

Гем помогает найти только актуальные значения в больших файлах локализации i18n

Проблема

Иногда очень хочется избавится от неактуальных записей в файлах локализации. Но после нескольких месяцев поддержки проекта может оказаться трудным найти актуальные ключи в файлах локализации i18n.

Решение

Этот простой гем патчит методы i18n.translate и i18n.t и сохраняет в отдельный YAML файл все вызванные ключи локализации с их значениями.

Как это работает

  • Установите гем в dev окружение
  • Запустите приложение
  • Посетите нужные страницы для нужных языков
  • Изучите файл лога /log/actual_locale.LOCALE_NAME.yml
  • После получения лога - удалите гем

Источник: rubyflow.ru

Unread

Unread - это библиотека для управления статусами read/unread объектов ActiveRecord. По заявлению автора, скорость работы - ее основная отличительная особенность.

Кроме невероятной скорости, Unread помогает:

  • установить статус "отметить как прочитанное" для одной записи,
  • помечать как прочитанные сразу несколько записей,
  • позволяет выбирать "непрочитанные" записи для отдельных пользователей.

Примеры кода и подробное описание принципа работы читайте в README на GitHub - github.com/ledermann/unread.

Источник: rubyflow.ru

Как становятся программистами?

13 интервью с матёрыми прогерами (80% - рубисты\рельсовики) из таких крутых компаний как Aviasales, Nokia, Social Quantum и другие. Мы опросили каждого о том, с чего начинался их путь в программировании, что помогло, чего не хватало, какую роль сыграло высшее образование, какую - самообразование и т.п.

http://mkdev.me/categories/kultura/posts/kak-stanovyatsya-programmistami-13-intervyu-s-ekspertami

Источник: rubyflow.ru

Бесплатный вебинар "Как стать крутым RoR-разработчиком, научиться создавать production-ready приложения и найти работу"

25 ноября 2014 г, в 20:00 по Москве состоится бесплатный вебинар от онлайн-школы Thinknetica "Как стать крутым RoR-разработчиком, научиться создавать production-ready приложения и найти работу".

Регистрация здесь.

Вебинар для тех, кто начал изучать RoR или уже имеет некоторый опыт работы с этим фреймворком.

На вебинаре вы узнаете:
- о лучших практиках и подходах, которые используют профессиональные RoR-разработчики
- что нужно знать и уметь, чтобы создавать реальные, production-ready, приложения
- план изучения RoR, который поможет получить необходимые навыки и знания
- о том как искать работу и на какую зарплату можно рассчитывать
- ответы на интересующие вопросы

Источник: rubyflow.ru

Как читать логи в Rails

Статья, расчитанная на самых маленьких в мире Rails: подробный разбор логов из рельсового приложения, показывается как много важной информации оттуда можно извлечь и как это ускоряет понимание фреймворка. Ну и в целом о важности логов.

http://mkdev.me/categories/dlya-samyh-malenkih/posts/nezamenimyy-navyk-smotret-v-logi

Источник: rubyflow.ru

Rails это просто Ruby

Желая научиться создавать крутые сайты и веб-приложения и избрав в качестве инструмента для этого Ruby on Rails, начинающие программисты нередко оказываются настолько очарованы известной "магией" фреймворка, что даже не задумываются о том, что лежит в её основе.

В этой статье автор показывает, что Ruby on Rails это не более чем просто Ruby, без какой либо магии. Очень полезно для новичков.

http://mkdev.me/categories/dlya-samyh-malenkih/posts/rails-eto-prosto-ruby

Источник: rubyflow.ru

Expert Fridays – Функциональное программирование

12 декабря в рамках Expert Fridays состоится заключительный IT-митап 2014 года, на этот раз посвященный функциональному программированию.

alt text

В этом году мы успели успешно провести front-end, back-end, mobile и devops митапы. Обсудить десятки актуальных вопросов, приобрести полезную информацию и завести новые приятные знакомства среди экспертов IT-сферы.

На этот раз мы ждем всех желающих обсудить рекурсивные чистые функции высшего порядка, функциональные языки Erlang, Haskell, Clojure, F#, а также функциональное программирование в Ruby, Python, Javascript.

Для участия в наших традиционных барных посиделках в качестве спикера с мини-докладом на 10-15 минут или просто слушателя, необходимо заполнить небольшую регистрационную форму на сайте (одну из представленных форм в зависимости от формы участия): http://expert-fridays.ru/

Место проведения: Россия, г.Казань, ул.Мусина 61в (navigator\campus)
Начало: 19:00

За дополнительной информацией обращайтесь:
Константин Макарычев (Provectus): +7 987 263 2641

До скорой встречи!

Источник: rubyflow.ru

Курс "Профессиональная разработка на Ruby on Rails"

Открыт новый набор на курс "Профессиональная разработка на Ruby on Rails".

В декабре 2014 нашему курсу исполняется 1 год, и мы приготовили много интересного, чего еще не было в предыдущих потоках!

Этот курс предназначен для тех, кто уже знает основы RoR и хочет двинуться дальше, чтобы стать настоящим профессионалом.

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

Большинство наших участников находят работу в качестве RoR-разработчика в 1-й месяц после окончания курса, а некоторые еще и до его окончания.

Кстати, если ты уже работаешь RoR-разработчиком, но чувствуешь, что тебе нужно подтянуть уровень, тогда этот курс также будет тебе полезен. Записывайся!

Источник: rubyflow.ru

Вход для пользователей