Как зарабатывать $450 000 в год Ruby on Rails разработчикомKirill Shirinkin

Наткнулся на ycombinator на топик Девелоперы с ЗП от 200 000 $ в год и больше, как вам это удалось. Впринципе, суть одна – работай больше и лучше, налаживай связи с большим числом людей. Но что самое интересное в этом топике – пост от разработчика с зарплатой 450k в год. Это больше миллиона рублей в месяц (примерно 1 600 000 р\мес). Посидел и оформил вольный перевод этого поста.

http://fodoj.com/categories/experience/posts/the-one-about-450k-developer

gem TheLog. Берегите свои суставыIlya N. Zykin

Представляю проект из серии гем за 5 минут :)

Устали от бесконечного набора console.log в своем coffeescript коде? Опять забыли вычистить console.log из продакшн кода и в консоль валятся отладочные сообщения?

Хватит это терпеть!

Замените долбаный console.log на log и поберегите свои суставы.

Установите гем прямо сейчас и:

  1. Экономьте 8 символов каждый раз, когда нужно вывести сообщение в консоль
  2. Управляйте выводом отладочных сообщений в одном месте через data атрибут или одну точку конфига в веб консоли.
  3. console.log больше не сломает JS в старых осликах

Вау! Да это праздник какой-то!

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

Коллекция "Practicing Ruby" - теперь доступна бесплатноAlex Soulim

Грегори Браун (Gregory Brown) - является автором многих замечательных проектов, один из которых - Practicing Ruby.

Practicing Ruby - это коллекция уроков на различные темы, касающиеся Ruby и программирования в целом.

Если вы еще не являетесь читателем и подписчиком, то очень рекомендую обратить внимание на этот уникальный источник знаний - https://practicingruby.com

TTYAlex Soulim

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

Только некоторые из возможностей:

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

Об остальных возможностях вам лучше читать в README - github.com/peter-murach/tty

Работать с API - очень просто. gem - simple_uri.Aleksandr

simple_uri - это гем, позволяющий очень просто делать http-запросы, к чему-либо. Я его написал, когда появилась необходимость произвести интеграцию сразу с несколькими API.

подключаем гем

gem 'simple_uri'

Пример использования:

SimpleUri.send_request(url: 'http://somesite.com/qwerty/', method: :post)

headers = { 'HEADER-X' => '1',
        'HEADER-Y' => '2' }
body = SimpleUri.body_to_str_params({ a: 1, b: 2 })
SimpleUri.send_request(url: 'http://somesite.com/qwerty/', method: :post, req_body: body, req_headers: headers, user: 'user', password: 'password', cookies: true, debug: true)

Больше примеров и информации - тут https://github.com/niksan/simple_uri

Комментарии
Airborne - фреймворк для тестирования APIAlex Soulim

Фреймворк Airborne создан на базе RSpec. Он позволяет упростить работу по написанию тестов для API.

Пример:

require 'airborne'

describe 'sample spec' do
  it 'should validate types' do
    get 'http://example.com/api/v1/simple_get' #json api that returns { "name" : "John Doe" } 
    expect_json_types({name: :string})
  end

  it 'should validate values' do 
    get 'http://example.com/api/v1/simple_get' #json api that returns { "name" : "John Doe" } 
    expect_json({:name => "John Doe"})
  end
end

Намного больше подробностей на официальном сайте проекта - http://brooklyndev.github.io/airborne/

JSON Schema + RSpec = мощный инструмент для тестирования APIAlex Soulim

Команда thoughtbot в очередной раз поделилась мудростью в своем блоге. На этот они рассказывают как можно использовать JSON Schema для упрощения тестирования ответов API.

Например, у вас есть код:

describe "Fetching the current user" do
  context "with valid auth token" do
    it "returns the current user" do
      user = create(:user)
      auth_header = { "Auth-Token" => user.auth_token }

      get v1_current_user_url, {}, auth_header

      current_user = response_body["user"]
      expect(response.status).to eq 200
      expect(current_user["auth_token"]).to eq user.auth_token
      expect(current_user["email"]).to eq user.email
      expect(current_user["first_name"]).to eq user.first_name
      expect(current_user["last_name"]).to eq user.last_name
      expect(current_user["id"]).to eq user.id
      expect(current_user["phone_number"]).to eq user.phone_number
    end
  end

  def response_body
    JSON.parse(response.body)
  end
end

Который может быть преобразован в такой вариант:

describe "Fetching the current user" do
  context "with valid auth token" do
    it "returns the current user" do
      user = create(:user)
      auth_header = { "Auth-Token" => user.auth_token }

      get v1_current_user_url, {}, auth_header

      expect(response.status).to eq 200
      expect(response).to match_response_schema("user")
    end
  end
end

Читайте все подробности в статье "Validating JSON Schemas with an RSpec Matcher"

Вышел Ruby 2.2.0-preview1Alex Soulim

Первый превью-релиз ветки Ruby 2.2.0. Этот релиз включает большое количество новых о возможностей и улучшений.

Например, сборщик мусора теперь работает с символами тоже. Кстати, Rails 5.0 будет требовать как минимум Ruby 2.2.

Остальные подробности читайте в официальном пресс-релизе Ruby 2.2.0-preview1 Released.