Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Ruby On Rails > сессии


Автор: GrayCardinal 28.12.2010, 16:28
Добрый день !
Пишу программулину, суть которой пока коммерческая тайна (извините). Так вот. В rails ничего серьезного пока не писал и моя программулина застопорилась на обычном действии... Сессии. Должно быть всё просто, но вот никак не соображу. Подскажите, пожалуйста. Вот что надо делать на этих этапах (самый простой вариант) :

1. Юзер зарегился (успешно). (что - то куда-то записать ?)
2. Юзер пользует сервис.  (как узнать какой пользователь ?).
3. Юзер нажал "выйти" или сессия давно не пользовалась. (почистить всё ?).

Помогите, пожалуйста ! В книженциях по сессиям ничего не нашел (возможно, плохо смотрел) :(

У меня третьи рельсы, 1.9.2 раби, линукс - калькулятор.
Заранее спасибо,
Олег.

Автор: parizh 28.12.2010, 19:00
Чтобы не изобретать велосипед, можешь попробовать взять гем devise. Там уже все реализовано за тебя: https://github.com/plataformatec/devise

Автор: GrayCardinal 28.12.2010, 19:13
parizh, 
Можно попробовать, конечно, но хотелось-бы что-нибудь истинно рельсовое :(

Автор: parizh 29.12.2010, 18:09
Точно не понял что ты вкладываешь в слова "истинно рельсовое". Это нормальная практика - использовать такого рода гемы вместо изобретения велосипедов.

Автор: source777 29.12.2010, 23:51
Цитата(GrayCardinal @  28.12.2010,  19:13 Найти цитируемый пост)
хотелось-бы что-нибудь истинно рельсовое :( 

Чтобы получилось истинно рельсовая аутентификация тебе всё-таки придётся выбрать что-то из http://ruby-toolbox.com/categories/rails_authentication.html, либо добавить туда свой вариант.
В любом случае, в коде вышеуказанных gem'ов ты можешь найти ответы на свои вопросы.

Цитата(GrayCardinal @  28.12.2010,  16:28 Найти цитируемый пост)
У меня третьи рельсы, 1.9.2 раби

на данный момент лучше использовать ruby 1.8.7 для rails-приложений

Автор: GrayCardinal 30.12.2010, 13:33
source777, 
Извини, но с "аутенификацией" я как-нибудь сам. Сравнить логин/пароль это плевое дело. Мне сессия нужна :( По идее нужна одна табла в которой привязка кук -> id юзера. ВСЁ. Проблема в том, что :
1. Непонятно как определять что запись в таблице куков "устарела".
2. Попахивает велосипедостроением :(

Автор: source777 30.12.2010, 14:23
Цитата(GrayCardinal @  30.12.2010,  13:33 Найти цитируемый пост)
Мне сессия нужна :( По идее нужна одна табла в которой привязка кук -> id юзера.
Непонятно как определять что запись в таблице куков "устарела".

1) У куков вообще-то прямо при создании дата и время устаревания указывается.
2) Ты уж определись где тебе нужно данные сессии хранить в куках или в БД.
В config/initializers/session_store.rb заглядывать не пробовал? Там довольно подробно описано:
Цитата

# Be sure to restart your server when you modify this file.

ProjectName::Application.config.session_store :cookie_store, :key => '_project_name_session'

# Use the database for sessions instead of the cookie-based default,
# which shouldn't be used to store highly confidential information
# (create the session table with "rails generate session_migration")
# ProjectName::Application.config.session_store :active_record_store



Цитата(GrayCardinal @  30.12.2010,  13:33 Найти цитируемый пост)
Попахивает велосипедостроением :( 

Да какой там, тут невыносимо воняет велосипедостроением... мало того что ты велосипед для аутентификации собрался делать, так ещё и велосипед для работы с сессиями пытаешься изобрести.

Автор: GrayCardinal 30.12.2010, 14:27
чОрт. Пошел грызть книжку smile

Автор: parizh 30.12.2010, 15:52
Цитата(source777 @ 29.12.2010,  23:51)
Цитата(GrayCardinal @  28.12.2010,  16:28 Найти цитируемый пост)
У меня третьи рельсы, 1.9.2 раби

на данный момент лучше использовать ruby 1.8.7 для rails-приложений

Почему ?

Автор: source777 30.12.2010, 16:15
Цитата(parizh @  30.12.2010,  15:52 Найти цитируемый пост)
Почему ? 

1) У многих gem'ов до сих пор имеются существенные проблемы с Ruby 1.9.x, хотя ситуация постепенно улучшается, так что возможно где-нибудь через полгода это уже будет не актуально.
2) Текущая версия Ruby Enterprise Edition основана на Ruby 1.8.7, поэтому какой смысл вести разработку на 1.9.2, если на сервере крутиться будет 1.8.7?

Хотя безусловно это временные условия и если ты планируешь запустить свой первый проект на продакшн не раньше конца 2011 года, то можешь смело продолжать с Ruby 1.9.2. А многочисленные грабли текущего момента даже поспособствуют твоему развитию, как программиста, если ты будешь решать возникающие проблемы самостоятельно. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)