μ

rbenv для установки Руби

Уже давно ушел с rvm на rbenv, многие фичи вроде гемсетов из rvm мне не нужны, плюс мне не нравится, что rvm патчит команду cd.

curl -fsSL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-installer | bash

Копируем выхлоп команды rbenv init в ~/.zshrc

И ставим Руби:

rbenv install 2.5.1
rbenv global 2.5.1
gem install bundler rails
rbenv rehash

И официальный readme на закуску: https://github.com/rbenv/rbenv

Zurb Foundation 5

Блог переписан под foundation 5. С нетерпением жду плашку mobile friendly от гугла. Проверить свой сайт можно по ссылкам mobile-friendly и mobile-usability

Foundation приглянулся мне вполне стандартными фичами в 2015-ом году:

Жалею что не начал использовать css фреймворки раньше. Проблема была в том, что тот же Bootstrap приелся ещё до того, как я захотел его попробовать.

Обходим блокировку Роскомнадзора для GitHub

Red Queen: "Now, here, you see, it takes all the running you can do, to keep in the same place."

Web Proxy #

Для браузеров Firefox и Chrome блокировку можно обходить практически в один клик поставив бесплатный аддон на выбор:

Я предпочитаю fri-gate, его можно включать только для выбранных сайтов и он не требует регистрации. Преимущество этих прокси перед Tor и I2P — они очень быстрые.

Tor (Linux) #

А чтобы использовать консольные команды нужно поставить не менее бесплатный Tor и оборачивать все команды в него. Так это выглядит для Arch:

pacman -S tor torsocks

sudo systemctl enable tor.service
sudo systemctl start tor.service

Можно работать:

torsocks git pull

В следующем посте обходим стоимость доллара в 55Р.

Хелпер для title

Типичная задача для нового сайта, расставить заголовки для страниц.

Если для тега указано значение, то выводим значение и название сайта. Если не указано, то только название сайта.

В application_helper.rb:

  def head_title
    if content_for(:title).present?
      "#{content_for :title} › #{Settings.main.title}"
    else
      Settings.main.title
    end
  end

В макет:

doctype
html
  head
    title= head_title

В представление:

- content_for :title, @post.title

exception_notification для мониторинга ошибок

Иногда ошибки возникают в production среде. Их не очень просто отловить даже если ошибка возникла из-за непосредственно ваших действий — нужно лезть в логи.

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

Чтобы быть в курсе дел можно использовать трекеры ошибок, например Airbrake и его opensource альтернативу Errbit.

Но в случае если приложение простое, например этот блог, можно ограничиться отправлением ошибок на почту при помощи exception_notification.

Вам автоматически будут приходить уведомления на почту, когда что-нибудь сломается:

Для четвёртых Рельс подключается так:

Gemfile #

gem 'exception_notification'

config/environments/production.rb #

В блок config добавить ваши настройки:

config.middleware.use ExceptionNotification::Rack,
    email: {
    email_prefix: "[dobroserver][error] ",
    sender_address: "server@domain.tld",
    exception_recipients: "admin@domain.tld",
    email_format: :html
  }

That's all folks!

Движок блога обновлён до четвёртых Рельс

GitHub #

https://github.com/ksevelyar/dobroserver

Что нового? #

И множество мелких исправлений.
Теперь у меня будет больше времени писать в сам блог, чем в его код.

Параметры по умолчанию для rails new

Обычно я пишу примерно такую команду, чтобы создать приложение:

rails new solar_system --skip-test-unit --skip-bundle -d postgresql

Чтобы не указывать эти флаги каждый раз, можно создать .railsrc:

echo "--skip-bundle
--skip-test-unit
--database=postgresql" > ~/.railsrc

Поиск пакета по команде

Устанавливаем утилиту:

pacman -S pkgfile

Обновляем базу:

sudo pkgfile --update

Ищем пакет содержащий команду cgdisk:

pkgfile cgdisk 

Результат:

extra/gptfdisk