Skip to content

Instantly share code, notes, and snippets.

View evg2108's full-sized avatar

Eugene Gavrilov evg2108

  • Russian Federation, Krasnoyarsk
View GitHub Profile
@evg2108
evg2108 / gist:2270e00423dea1578d52
Last active March 16, 2016 06:03
Рабочее решение проблемы установки сертификата разработчика apple под windows для разработки расширений safari

Рабочее решение проблемы установки сертификата разработчика apple под windows для разработки расширений safari

Если после регистрации в центре разработчиков на сайте apple, создания сертификата разработчика расширений и скачивания его на свой компьютер под управлением Windows попробовать установить этот сертификат, то это не возымеет никакого эффекта для Extension builder браузера safari. Для того чтобы safari всё же увидел сертификат необходимо скачать и установить OpenSSL и выполнить следующие инструкции:

1. Скачать с центра сертификатов сгенерированный сертификат safari_extension.cer.

2. Выполнить в командной строке: c:\OpenSSL\bin\openssl x509 -in safari_extension.cer -inform DER -out safari_extension_PEM.cer -outform PEM
@evg2108
evg2108 / rspec.md
Last active August 29, 2015 14:05
rspec тесты

Замечания по написанию rspec тестов

rspec и piperclip

При напсании rspec тестов было замечено, что использование файлов в качестве аттачментов могут сильно замедлять их прогон. В моём случае связано это было с тем, что при привязывании картинок Piperclip производит много медленных действий по их конвертированию. Для того, чтобы ускорить прохождение тестов, можно отключить конвертирование, переопределив некоторые методы Piperclip.

Первое что нужно сделать - переопределить метод Piperclip.run:

# this file should be located in directory lib/paperclip_processors/
# even though class WatermarkProcessor defined in module Paperclip
#
# example:
#
# has_attached_file :photo,
# :styles => {
# medium: '300x300>',
# thumb: '100x100>',
# album: '218x148#',
@evg2108
evg2108 / gist:38e572717ab7bb54ae39
Last active August 29, 2015 14:20
выборка по списку id (или по чему-нибудь другому) с сортировкой точно как в списке
ids = [1,8,4,9,2]
Article.where(id: ids).order(ids.map{|a| "id = #{a} desc"}.join(', '))
@evg2108
evg2108 / capistrano_deploy_strategies.md
Created October 12, 2015 15:06
Стратегии деплоймента в Capistrano

#Стратегии деплоймента в Capistrano Стратегии деплоймента в Rails настраиваются в файле config/deploy.rb. Сама настройка сводится к установке нескольких встроенных переменных в определённые значения.

# эта стратегия используется по умолчанию. Сводится она к тому,
# что на :app сервере запускается приложение svn которое обращается 
# к удалённому репозиторию и делает checkout указанного проекта.
set :deploy_via, :checkout

Для того чтобы перекодировать текст в другую кодировку, но если, при этом, приложение неправильно определяет в какой кодировке приходит текст, то делаем следующее:

  received_text.force_encoding('Windows-1251').encode('UTF-8')

Здесь force_encoding указывает в какой кодеровке текст находится сейчас, а encode перекодирует этот текст в указанную кодировку.

@evg2108
evg2108 / bundle.md
Last active February 20, 2016 12:14
Использование bundler и деплой с помощью capistrano

И случилось так, что герою потребовалось задеплоить на сервер, находящийся во внешнем мире проект. Но славного героя подстерегала беда, ведь один из гемов находился на внутреннем сервере gitlab родного королевства. Поэтому тщетны были его попытки и магическая консоль сыпала ошибки (ошибка при попытке загрузить гем из недоступного источника).

Сам проект так же находился на этом же внутреннем сервере, но герою успешно удалось побороть эту проблему с использованием магического гема для capistrano3 (гем называется capistrano-git-copy), который позволил ему использовать стратегию копирования. Но разобраться с злополучным гемом, находящимся на внутреннем gitlab сервере так просто не удалось.

Долго бился герой, пока не наткнулся в своём отчаянии на команду бандлера:

@evg2108
evg2108 / string_as_slim_template.md
Last active February 4, 2019 06:41
render string as slim template

#render string as slim template

example:

module WelcomeHelper
  def tile_link_to(title, href, icon_content = nil, &block)
    icon_content = capture { block.call }.strip.squish if block_given?
    content = <<-slim
 .tile
@evg2108
evg2108 / ubuntu.md
Created March 17, 2016 06:39
Ubuntu
sudo apt-get update && sudo apt-get upgrade --fix-missing --fix-broken

Эта штука вродеисправляет битые и пропущенные пакеты и их зависимости

@evg2108
evg2108 / spec_private_methods.md
Last active May 4, 2016 13:40
RSpec for private methods

add this to spec_helper.rb or rails_helper.rb

# for testing private methods of classes
RSpec.shared_context 'private', private: true do

  before :all do
    described_class.class_eval do
      @original_private_instance_methods = private_instance_methods
 public *@original_private_instance_methods