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

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

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

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

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

Ruby & OracleAndrey

Возникают задачи, при которых необходимо работать с БД 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.

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

Райн Бигг (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".

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

Все уже знают, что такое конечные автоматы, поэтому я просто приведу пример 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

TheViking 1.0Ilya N. Zykin

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

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

TheActualLocales releasedIlya N. Zykin

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

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

Проблема

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

Решение

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Как читать логи в RailsKirill Shirinkin

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

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