3.21.2016

Sass, что делать при ошибке ERROR: Could not find a valid gem 'sass' (SSL connect returned ...)

Содержание

  1. Установить Sass легко. 
  2. Почему не всегда это так
  3. Решение для windows
  4. P.S. или другое решение
  5. Полезная ссылка по CSS

Установить Sass легко.

В сети полным полно информации о том как установить Sass и вот ссылка на хороший тому пример https://www.youtube.com/watch?v=viWBi8YZHXU.

Но не всегда так легко как кажется.

Иногда вы можете получить разного рода ошибки. Неприятно! К таковым относится ошибка SSL ключа при установке sass (gem sass). И если вы не знаете, что такое SSL, то поиск решения может оказать достаточно трудоемким.

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

Решение для windows

Нужно скачать и выполнить следующий ruby скрипт win_fetch_cacerts.rb.
Обратите внимание, что данный скрипт выполняет get запрос на удаленный сервер, там скачивает файл cacert.pem. При этом сервер может быть недоступен! В таком случае прокрутите статью ниже, там вы найдете ссылку на файл cacert.pem, который можно скачать вручную и положить в директорию к Ruby on Rails.

require 'net/http'

# create a path to the file "C:\RailsInstaller\cacert.pem"
cacert_file = File.join(%w{c: RailsInstaller cacert.pem})

Net::HTTP.start("curl.haxx.se") do |http|
   resp = http.get("/ca/cacert.pem")
   if resp.code == "200"
     open(cacert_file, "wb") { |file| file.write(resp.body) }
     puts "\n\nA bundle of certificate authorities has been installed to"
     puts "C:\\RailsInstaller\\cacert.pem\n"
     puts "* Please set SSL_CERT_FILE in your current command prompt session with:"
     puts " set SSL_CERT_FILE=C:\\RailsInstaller\\cacert.pem"
     puts "* To make this a permanent setting, add it to Environment Variables"
     puts " under Control Panel -> Advanced -> Environment Variables"
   else
     abort "\n\n>>>> A cacert.pem bundle could not be downloaded."
   end
end

Сохраните текст скрипта в файл win_fetch_cacerts.rb. Запустить терминал по пути рабочего стола. и выполните ruby win_fetch_cacerts.rb

После этого установка sass и compass (gem i sass, gem i compass). Пройдет успешно.

Если вы хотите, чтобы ruby запомнил проделанные вами действия нужно создать SSL ключ в файл cacert.pem

Загрузить cacert.pem можно тут https://curl.haxx.se/ca/cacert.pem
Решение было найдено тут https://gist.github.com/fnichol/867550 (на английском).

P.S.

Так же, если вы не хотите заморачиваться и не боитесь вирусов :), то можете скачать нужный вам gem из другого репозитория без SSL. В терминале могут быть выведены ссылки по которым это можно сделать. Если я нечего не путаю, на windows 10 такое встречал.

Полезная ссылка

Подборка 50 CSS инструментов, фреймворков и библиотек за 2015 год.
https://speckyboy.com/2015/12/06/css-tools-frameworks-libraries-2015/

3.17.2016

Переходим на ES6 и разработку через тестирование

Всем привет! Не так давно я решил перейти на новый стандарт JavaScript ES6 при разработке клиентского кода. До этого я с удовольствием разрабатывал новые фичи в jsfiddle.net, а потом переносил код в свой любимы редактор brackets, либо сразу разрабатывал в нем. При такой системе тестировать свой код легко и просто можно в jsfiddle.net, а позже перенести все на jasmine.

В случае с кодом ES6 все становится немного сложнее и запутаннее и такая система больше не приносит счастья :). Да, в jsfiddle есть режим для разных стандартов кода, и да, он понимает babel, но это все не то. В начале просто начинают раздражать ошибки компиляции, когда код выкидывает синтаксическую ошибку в консоль, а позже начинаешь хотеть подключать модули через import или require и наконец приходишь к тому, что разработка в jsfiddle на es6 приносит слишком много неудобств.

Таким образом я пришел к выводу, что jsfiddle и разработка на es6, это вещи которые лучше не совмещать.

Просто разрабатывай в brackets запускай все сборки и тесты через Grunt и радуйся жизни. Но, нет! Если разрабатываешь на es6 то и код и тесты должны быть в новом стандарте.

Сначала я попробовал реализовать задумку при помощи Grunt, но затея для меня не прижилась. Во-первых потому, что не нашлось модуля под Grunt для запуска тестов jasmine в формате es6. Во-вторых, потому что я хотел получить полностью автономный модуль в стандарте ES6. А во-третьих, не хотелось плодить в папке модуля еще и файл сборки с скомпилированным файлом.

Задача была простой! Хочу полностью автономный модуль который будет написан в современном стандарте es6 включая тесты и с возможностью запустить тестирование одной командой. При этом все коды и тесты соберутся, с компилируются, запустятся, а мне в консоль выведут результат и не каких лишних файлов.

Пришлось немного порыться на сайте babel найти решение. После запуска обнаружилось, что в консоль не выводятся описания тестов. И опять пришлось немного погуглить, и опять решение нашлось в виде готового модуля jasmine-spec-reporter

Получилось готовое решение. Правда нужно заметить, что через некоторое время мне понадобилось тестировать код в браузере и я добавил файл для запуска в браузере, плюс конфигурацию сборщика webpack и shell скрипт, чтобы собрать это одной командой.

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

А итоговый модуль можно найти на моем репозитории https://github.com/Talalaev/run-code-es6_and_jasmine-test-es6 скачать себе как шаблон и с удовольствием начать разрабатывать свой замечательный код по методологии BDD и в соответствии современному стандарту ES6.

P.S.
А еще, если запускать командную строку из IDE то вообще песня! Вот тебе код, вот на соседней вкладочке тесты и вот тебе чуть ниже вывод тестирования в консоль в один клик или автоматически. Ну разве не чудо !?