Чтобы добавлять сообщения и комментарии, .

@Hamper:
Hamper

кто у кого нибудь было так что при одном запросе 2 раза выполняется get для этого запроса?

@wyldrodney:
wyldrodney

Ruby хороший язык. Но Rails всё портит. Подумываю уже попробовать плагины к Sinatra или Rails Metal (вроде, так зовётся). Может с ними будет попросторнее.
Ха... простор писать бесполезные сайтики...

@wyldrodney:
wyldrodney

Треды можно запускать прямо из config.ru: пишем всё что обычно, а поттом подымаем демона через обычный вызов функции или даже просто пишем код. Мелочь, а приятно.

@wyldrodney:
wyldrodney

Завтра буду писать демона на Руби. Задача: в цикле обращаться к БД и по указанному времени подымать задачи. Задачи должны выполняться в отдельных потоках. Хуй его знает зачем так, но я ровно ничего не смыслю во многопоточности и очередях задач, потому сделаю хоть как-то. Ведь главное... попробовать чтобы при последующем чтении стало ясно где накосячил.

@wyldrodney:
wyldrodney

Нужно выполнять в фоне различные задачи по таймеру. А-ля cron. Что посоветуете?

Понравилось решение `while true do ...` за счёт простоты, но выглядит оно ненадёжно.
Не понравились Whenever и Rufus так как у меня они ни разу нормально не работали. Не понравились DJ и EM за счёт излишней тяжеловесности. Не понравилось Backgrounded за счёт ориентированности на модели. Однако все они умеют какие-то проверки коллизий и очереди, что хорошо.

Пока что думаю писать свой простенький шедулер с какой-никакой защитой от забивания очереди невыполнившимися задачами, но выглядит это не очень то и надёжным. С другой стороны, мне нужно гибкое решение, а чужие, как известно... этим никогда не отличаются :)

@wyldrodney:
wyldrodney

Нужно сделать рекурсивное has_many в пределах одной таблицы. AcriveRecord бы за такое послал и не дал хэлпер. А ручками, с DataMapper, можно поиметь такое ограничение и сделать как тебе нужно.

@wyldrodney:
wyldrodney

Заботать кэширование в Sinatra. Т.е. его там нет и не будет, но хотя бы expire для картинок установить нужно. А вообще, можно и nginx'у это отдать.

@wyldrodney:
wyldrodney

Вот вам и энтырпрайз: после обновления сабжа у него отвалился send_file. И в сети есть ровно нифига объяснений почему, и ещё меньше способов решения. Так почти час убил на восстановления работоспособности методом тыка.
Окунулся в дерьмецо старых работ. Выбросить бы сервер и всё с ним связанное...

@rb:
rb

Сказ про то, как генерировать RSS из HAML.

blog.gun8.com

@wyldrodney:
wyldrodney

Дерьмо. Жмём несколько раз F5 и данные о сессии чудесным образом обнуляются. Проверяю.

@wyldrodney:
wyldrodney

Авторизация в синатре — это просто. Убил бы себя за идею перевести проект на эти дрова!
get '/login' do
haml :login
end

post '/auth' do
if params[:password] == "1234"
session[:logged] = true
else
session[:logged] = nil
end

redirect '/'
end


before do

puts session[:logged]

unless session[:logged]
unless request.path_info == '/login' || request.path_info == '/auth'
redirect '/login'
end
end
end

@wyldrodney:
wyldrodney

В первотеге партиалы не осилил. Наплодил вермишели. Вспомнил про =yield и content_for. Забил.

@wyldrodney:
wyldrodney

Не осилил partials в синатре. Пробовал stackoverflow, официальный faq, костыли. Вывод нулевой. Дедлайн близится... решаю "в лоб".

@wyldrodney:
wyldrodney

Закончил "ядро" сборщика статистики по объявлениям. rghost.ru
Надо бы оттестить union groups... только за десяток тысяч итераций такая ситуация ни разу не возникала, а руками это делать бесполезно >_>

@wyldrodney:
wyldrodney

Есть 3 функции: main, worker и tool. Первая вызывает вторую, вторая третью (упрощённо). Кода много, хочется разнести это в разные файлы. Также хочется запускать всё под passenger'ом или чем-то подобным — нужен config.ru.

Вопрос: как подключать файлы? Бросьте в меня доком или примером. Пока что в config.ru указал:
require 'rubygems'
require 'sinatra'
require './main'
require './tools'

run Sinatra::Application

А в файлах оставил голые функции, но что-то мне это не нравится — пространство имён не ясно как работает.

@wyldrodney:
wyldrodney

Расту, за какой-то день неплохо осилил Синатру. Год назад бы не поверил %)

@wyldrodney:
wyldrodney

Самая кавайная няшность из всех каванйостей!

@wyldrodney:
wyldrodney

Добрался. Тыкаю, смотрю документацию, расширения... и не понимаю в чём функциональные отличия от рельсов-то...

@demiazz:
demiazz

Статья, как быстро настроить Sinatra приложение для работы с HAML+Compass+Blueprint. blog.crowdint.com

@demiazz:
demiazz

Нашел хорошее применение синатре. На нем удобно настраивать окружение для разработки интерфейса приложения с использованием тех или иных шаблонизаторов. К примеру, используя HAML/SASS/Compass/CoffeeScript можно автоматизировать генерацию, и просмотр страниц, при этом, если интерфейс разрабатывается до разработки приложения (к примеру, нужно создать предварительный макет приложения), то это самое то, мне кажется. =)

@wyldrodney:
wyldrodney

Я добрался до CMS на веб-фреймворке Sinatra. Это генератор статических страниц, хранящий историю изменения страниц в git-дереве. Умеет комменты, ленты и аналитику страниц (как — не понял ещё). Зовут Nesta.
nestacms.com

@demiazz:
demiazz

Чего то в тви проскочила ссылка на видео с ютуб, с подписью типа после Merb теперь и Sinatra объединяет силы с рельсами. Жаль видео посмотреть не получится, интересно — это правда? А то так посмотрю, чего то на руби прям усиленно все вкладывают силы исключительно в рельсы. Только вот не пойму. А нафиг рельсам микрофреймворк? О_о

@demiazz:
demiazz

Внезапно, открыл для себя, что Flask был вдохновлен Sinatra. Все же надо порой больше интересоваться появлением тех или иных инструментов, которыми пользуюсь.

@stanis:
stanis

В порядке своего... первого опыта с sinatra я сделал ЭТО: home.dinexi.ru:4567
Передача переменных в шаблон двумя разными способами. Ну а fortune работает в качестве модели. ЭмВэЦэ на лице. Ой, нет: ЭмВэЦо налицо.

@kaineer:
kaineer

Поставил себе shotgun. Я — идиот, т.к. не поставил его раньше.

@kaineer:
kaineer

Ну, с первым деплоем на хероку меня :) [ strong-light-92.heroku.com ]

@kaineer:
kaineer

допилил к запоминалке возможность для зарегистрированных пользователей делать закладки и печатать закладки в виде таблички. Доделать бы регистрацию — цены бы не было %)

@kaineer:
kaineer

Выложил в дропбоксе приложение-запоминалку японских слов [ dl.getdropbox.com ]. Сделано на sinatra'е, соответственно, требует ruby, rubygems и sinatra. Скриншот: [ dl.getdropbox.com ]