anonymous@RULINUX.NET~# | Last login: 2024-12-25 21:21:27 |
Регистрация Вход | Новости | Разметка | Пользователи | Галерея | Форум | Статьи | Неподтвержденное | Трекер | Правила форума | F.A.Q. | Ссылки | Поиск |
Форум - Talks | [RSS] |
Никогда особо не связывался с ruby, и как-то не хотелось, но совсем недавно таки пришлось.
Предыстория: есть сервер, на нём гордо и уверенно стоит дебиан ленни и запущена куча разных сайтов, важных и не очень. Кроме всего этого, там установлен redmine (это такой багтрекер, если кто не знает), который работает в двух экземплярах на разных доменах, и используется не как багтрекер, а как эрзац-CRM для манагеров.
Всё это богатство установлено по debian-way - это когда мэйнтейнеры накручивают кучу костылей, скриптов, раздельных конфигов, пихают везде dbconfig, debhelper и прочую ересь. Из-за этого получается, что два редмайна работают на одной кодовой базе, директории сделаны симлинками на /usr/share/redmine. Да, этот debian-way ещё и кривой, так как в своё время уже вылазила проблема с перемешиванием данных этих двух сайтов. Крутится всё это счастье на апаче через модуль с пафосным названием Phusion Passenger, а перед апачем торчит lighttpd и отдаёт статику.
И вот внезапно стало необходимо один редмайн оторвать от общего кода и вынести отдельно, поменять пару мелочей и обновить до новой версии. А второй редмайн лучше не трогать вообще. Стабильный дебиан настолько стабильный, что версия редмайна по своему возрасту выглядела так, как будто видела живого Ленина. Было решено оторваться от дебиана вообще.
Я, вооружившись гуглом и общими знаниями, решил поставить редмайн в /home, заодно ликвидировав часть возможных проблем с безопасностью. Я иногда использую virtualenv для питона, и его подход мне очень нравится, тем что не надо засорять систему, потому решено было поискать аналог на руби. И вот был найден некий RVM. Простота его установки сначала удивила, но потом оказалось, что не всё так просто. Бедный ruby настолько костылен, что для такого простого действия, как установка "не туда, где обычно", этому скрипту приходится подменять $HOME на ходу. Немного покопавшись, были установлены нужные пакеты через gem install. Старая БД даже умудрилась сконвертироваться в новый формат. Запустив редмайн через какой-то встроенный вебсервер, я обрадовался, и ушел пить чай, надеясь, что после быстренько настрою продакшен-сервер и пойду спать.
Но всё оказалось хуже. Сначала я решил запустить просто и быстро - через FastCGI напрямую с lighttpd. Всего-то - написать конфиг лайти и скрипт для запуска процесса. Скрипт, причем, уже был в комплекте редмайна. Настроил, запустил... Хер там. В логах пусто, в браузере пусто. В гугле, что характерно, тоже пусто. Ладно, видимо лайти и грубый fastcgi - немодно, запустим-ка мы его по-старому, через апач. Пробуем - хрен. Дебианский модуль староват, надо собирать новый. Собираем через RVM. Документация, кстати, страдает, но для опенсорца это нормально. После сборки понимаем, что апач не может два модуля с рубями одновременно. Либо старый редмайн, либо новый, так как оно имеет хреновую обратную совместимость. Точнее, апач по идее умеет разные модули, но не в случае с руби.
Ладно, ищем дальше. Находим некий Mongrel. Тут мне вспомнилась цитата из рассказика "Сталин и атомная бомба":
"- Вы, кстати, сами-то не жид будете, товарищ Берия?
- Нет, товарищ Сталин, я мингрел.
- Мингрел — хуй на печке грел, — еще раз удачно пошутил Сталин, и общество еще немного посмеялось."
Ставим мы этого мингрела, причем какой-то mongrel_cluster, ищем как настроить. Гугл выдаёт скрипты на французском. Прекрасно. Официальный сайт - лежит. Ещё прекраснее. После 10 минут поиска оказалось, что надо какой-то конфиг сгенерить. Ну ок, сгенерил. Запускаем, значит, этого мингрела, он висит на 8000-8003 портах и стоит за лайтом как бэкенд. Падает. Красота. В логах какая-то совершенно невнятная ошибка, которую гугл даже не знает. После долгих поисков находим то, что для работы именно версии rails 2.3.11 и последнего стабильного (!) редмайна + последнего стабильного (!!) мингрела требуется наложить аж 2 патча, а баг вообще закрыт как wontfix. Ладно. берём эти патчи, запускаем - работает. Радость.
Остаётся последнее - написать простой инитскрипт, который будет запускать и останавливать этого мингрела. Но скрипты работают из-под рута, а RVM этот подсовывает новый руби только под юзером, и только с настоящим shell. Пробуем судо - не берёт, смотрим на некий rvm wrapper - нихрена не понятно. Кое-как запускаем через su - user -c "...". Наконец-то.
Можно конечно сказать, что это я такой криворукий, и это будет правдой. Но, простите, даже тот же недопетон умудряется со своим virtualenv работать после пары команд, не требует замены $HOME и прочих костылей. Кроме того, оказывается руби и rails стали настолько ынтерпрайзными, что для любого простого дела созданы кучи каких-то левых программ, которые настраивать дольше, чем писать сам исходный сайт. Сплошной YAML, XML и конфиги.
Алсо, обратная совместимость софта на руби впечатляет:
"Ruby 1.9 is not supported yet. You have to use Ruby 1.8.x as stated above.
RubyGems 1.3.7 or higher is required with following limitations :
Rails 2.3.5 will fail with RubyGems 1.5.0 or later, stick to previous versions of RubyGems !
Rails 2.3.11 will fail with RubyGems 1.7.0 or later, stick to previous versions of RubyGems !
Mongrel 1.1.5 needs a patch attached to #7688 to work fine with Rails 2.3.11. In case of upgrade, another issue may appear for some time after migration (#7857)."
В общем, мну бешено негодует и идёт писать код на VisualBasic.NET.
SystemV(*) (2011-06-03 23:00:00)
Emacs-w3m/1.4.414 w3m/0.5.3
|
|
|
Скрыть
Re: А почему ruby такое УГ?Руби — это кромешный пиздец, лучше уж возится с Питоном каким-нибудь, чем с этим говном. Да и софта на руби очень мало, а полезного и вообще нет. Стандартная библиотека говно, с utf разные проблемы, короче закопайте это УГ. Есть динамические интерпретируемые язычки и получше. anonymous(*)(2011-06-04 00:15:13)
Mozilla/5.0 (X11; Linux i686; rv:2.0.1) Gecko/20100101 Firefox/4.0.1 |
Скрыть
Re: А почему ruby такое УГ?> Руби — это кромешный пиздец, лучше уж возится с Питоном каким-нибудь
|
Скрыть
Re: А почему ruby такое УГ?Ruby имеет странную особенность. Вроде когда берешься за него, кажется так просто, красиво, ну просто суперпродуманный язык. Но когда вглубь это все. Как всегда старый добрый php рулит. Ну и фиг с ним что он быдлокодерский, пусть не эстетично,но зато дешево надежно и практично. Тем более программирование нужно вообще-то для практических целей, то есть не программирование ради программирования. А кому надо программирование ради программирования - пожалуйста перл, питон и руби, пусть извращаются сколько влезет, да и это однозначно. :))) iwolf(*)(2011-06-04 00:46:23)
Отредактировано iwolf по причине "не указана" Mozilla/5.0 (Windows NT 5.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1 |
Скрыть
Re: А почему ruby такое УГ?хуже руби ИМХО только бедон. Правда с руби я сталкивался намного реже чем с бедоном. В руби может быть задумка и хороша, но реализация из рук вон плохо и переделывать реализацию вряд ли будут. В бедоне же плохо абсолютно всё. bugmaker(*)(2011-06-04 11:50:47)
Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9.2.11) Gecko/20101013 Ubuntu/9.04 (jaunty) Firefox/3.6.11 |
Скрыть
Re: А почему ruby такое УГ?Можно конечно сказать, что это я такой криворукий, и это будет правдой. Ты сам все знаешь. Сложил все гавно в одну корзинку и удивляешься что не работает. Используй изолированные друг от друга run-time enivroments. |
Скрыть
Re: А почему ruby такое УГ?>Ты сам все знаешь. Сложил все гавно в одну корзинку и удивляешься что не работает.
>Используй изолированные друг от друга run-time enivroments.
|
|
|
|
Этот тред читают 1 пользователь: |
Анонимных: 1 Зарегистрированных: 0 |
Re: А почему ruby такое УГ?
Кстати, на сервере с этим RVM мною был обнаружен проект BDSM - Bash Delectable Scripting Modules.
Его название и логотип очень показательны:
И подпись: Only a submissive system is a good system...
Emacs-w3m/1.4.414 w3m/0.5.3