воскресенье, 28 сентября 2014 г.

Vagrant, Windows 7-8 x64 и ошибка незакрывающихся сессий

На днях, (причем на выходных, закон Мерфи воочию), при запуске виртуальной машины с новым проектом, через Vagrant, получил зависание оной. Что выразилось в остановке на пункте: Booting VM ... После получасового ожидания за просмотром клипов Lindsey Stirling, я понял, что ожидать нечего. Закрыл сессию в консоли Ctrl+C, и узрел ошибку Error, "что_то_там" блокирует процесс с ID=x00300 и т.п.

После гугления и раздумий, переустановок vagranta, virtualbox, понял, что проблема в сессиях, которые некорректно завершаются даже с помощью команды vagrant halt.

Решение
Способ простой (upd 29.09.14) : в консоли запускаете
 vagrant halt
vagrant reload

Способ сложный:
Хорошо, сказал я, в Диспетчере задач, посмотрел процессы VirtualBox и завершил, VBoxSVC.exe а также попытался завершить остальные процессы работающие с VirtualBox.
Затем снова открыл консоль, перешел в директорию с проектом, и внимание: сперва запустил команду vagrant halt, дождался завершения сеанса, а затем vagrant up, и все работает)

Проблема возникла с Vagrant 1.6.5, и VirtualBox-4.3.16-95972-Win

Сразу после установки наблюдаю, такое предупреждение, возможно это причина моей проблемы. Пока ожидаю обновления Vagranta.


Upd: 23/05/15 - Windows 8,
после установки Vagrant + VirtualBox, и запуска, все таки не забываем запустить
vagrant up
vagrant provision
---

суббота, 13 сентября 2014 г.

vagrant, ruby on rails, и решение ошибки с кодировкой latin1

В один из вечеров, для саморазвития, следуя заветам Джона Резига (пишите код каждый день), решил написать новый проект, но не на PHP, а на Ruby. Давненько присматривался, но все откладывал, а сейчас появилось чуток времени. Дай думаю, принесу пользу людям, да и себе.

Порыскав понял, что писать на Ruby под Windows, не стоит. Linux ставить на ноут, пока нет возможности, решил запустить на виртуалке, используя виртуальную машину VirtualBox.
Для "еще_незнающих", есть полезная утилита vagrant (vagrantup.com) - можно запускать virtualbox и сохранять образы. То есть, установил virtualbox, vagrant -> запустил vagrant , скачал box, (образ), настроил один раз. А затем клонировал, и уже с клоном "играешься" как хочешь. Если клон-образа сломался, не беда, запускаем базовый образ, клонируем и через несколько минут - у нас уже полностью настроенная система. Profit!

Тут хороший мануал, по которому у меня все заработало почти сразу. Совет скачивайте и устанавливайте последние версии virtualbox, vagrant. Различные версии между собой несовместимы.

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

после шага:

bundlerake db:create db:migrate db:seed
Ошибка:

PG::Error: ERROR:  encoding "UTF8" does not match locale "en_US"
DETAIL:  The chosen LC_CTYPE setting requires encoding "LATIN1".
: CREATE DATABASE "stuff_test" ENCODING = 'unicode'

Решение (взято отсюда):


1
2
sudo su postgres
psql
1
2
3
4
5
update pg_database set datistemplate=false where datname='template1';
drop database Template1;
create database template1 with owner=postgres encoding='UTF-8'
  lc_collate='en_US.utf8' lc_ctype='en_US.utf8' template template0;
update pg_database set datistemplate=true where datname='template1';


Don't forget!:

Выйти из postresql
\q

завершить сеанс под sudo
exit


Поздравляю, теперь все работает.