Създайте демо версия на Rails сайт, която може да се играе?

Това е доста често срещано в сайтовете – имате „демо“ версия с акаунт за гост, пълен с данни/публикации/коментари, с които можете да играете, и всички данни се нулират на всеки няколко часа, така че потребителите да не спамят демо сайта.

Мислех да имам друга среда на релси, "mysite_demo" и да използвам задача на cron, за да извикам rake, за да нулирам нейната база данни на всеки X часа и да попълвам началните данни.

Тогава ми хрумна, че в цялото си приложение ще трябва да проверя дали работя в „демо режим“: Например, ако демонстрационният сайт също има страница за вход/регистрация, потребителят може да се регистрира, да вмъкне някои данни и се чудя защо акаунтът му е изтрит, след като е влязъл отново.. така че demosite изобщо не трябва да има опция за регистриране.

Затова си помислих, че ще направя "демо" разклонение на кода... с разликата и просто ще обединявам промените, докато вървя... звучи като пресилено.

идеи?


person amitkaz    schedule 08.09.2009    source източник


Отговори (9)


В моето приложение започнах с фиксиран демо потребител с акаунт, който се нулира на всеки час. Нещо в този модел не беше съвсем както трябва - ако имаше няколко потребители, които използват демонстрацията едновременно, може да изпаднете в някои странни проблеми с паралелността. И какво, ако даден потребител е в средата на демонстрация и вие нулирате демо акаунта? Какво става?

Не знам дали този модел работи за вас, но в крайна сметка създадох чисто нов потребителски акаунт с демонстрационен флаг, зададен в базата данни - също така автоматично влизам в профила на потребителя. По този начин потребителят може да си играе толкова дълго, колкото те харесват и не е нужно да се притеснявам, че данните ще бъдат изтрити/променени, докато потребител демонстрира приложението ми. Изпълнявам задача cron всяка вечер, която изтрива потребители с набор от демо флагове, които са по-стари от 24 часа.

person Andy Gaskell    schedule 09.09.2009

Ако демо версията работи от собствена база данни, как се различава от истинската? Демонстрационният сайт е само екземпляр от вашия продукт.

Просто почистете DB и преразпределете демонстрацията, ако е необходимо. Толкова ли е просто или пропускам нещо?

person basszero    schedule 08.09.2009
comment
някои функции липсват в демонстрационния сайт, като регистриране на нов потребител.. така че, както написах, не мога просто да разположа така, както е, трябва да направя свой собствен клон или да накарам кода да провери дали работи с производство или демонстрация. не съм сигурен дали и двете опции са добри, оттук и въпросът :) - person amitkaz; 09.09.2009

Тогава ми хрумна, че в цялото си приложение ще трябва да проверя дали работя в „демо режим“ (напр. не можете да регистрирате нов потребител в демонстрацията) и да накарам сайта да се държи съответно.

Ако сайтът е в демо версия, защо има значение какво правят потребителите? Всичко, което правят, ще бъде изтрито след няколко часа, така че няма да могат да вършат работа с него.

Звучи сякаш се опитвате да попречите на сайта, така че те да платят. Не знам какво прави вашият сайт, но ако това е услуга, базирана на хост (уеб страница, която съхранява и показва информация), тогава ограничената продължителност на живота на данните трябва да възпира скуотърите.

Ако вашият уебсайт прави нещо, което може да се използва другаде, тогава виждам ограничаване. Пример може да бъде услуга, която трансформира медийни формати или пише автобиографии. Ако потребителят може да направи нещо полезно в 2-часовия прозорец и да си тръгне с него, тогава можете да помислите за разклоняване.

person Tilendor    schedule 08.09.2009
comment
не, не за да пречи - единственото нещо, за което си помислих е, че потребител, който влиза в демонстрацията, ще види опция за регистриране, всъщност ще се регистрира и след това ще се чуди къде отиват всичките му данни след час.. затова исках да деактивирам регистрацията акаунти в демонстрацията, просто им позволете да имат акаунт за гости с всички данни, с които да играят - person amitkaz; 09.09.2009

Защо не позволите на потребителя да създаде акаунт, дори ако бъде изтрит след час?
Това им позволява да видят как работи процесът на регистрация на скрипта за поне един час, може би да изпратят съобщение на страницата за регистрация, че акаунтът е валиден само за час.

Само моите мисли

person JasonDavis    schedule 08.09.2009
comment
Това е опция, но след това отново ще трябва да вмъкна промяна в страницата за регистрация, за да покажа съобщението.. така че проблемът е същият :) - person amitkaz; 09.09.2009

Има ли друга функционалност, която е различна в демо версията от производствената среда? Ако това е просто проблем с регистрирането на потребителя, можете просто да създадете регистриран демо акаунт в производство и да дадете потребителското име/парола на хората. Въпреки че това може да не е опция в зависимост от други бизнес изисквания.

person Ryan M    schedule 08.09.2009
comment
демонстрацията трябва да има абсолютно същата функционалност, само заредена с данни, така че потребителят да не трябва да създава всичко, за да види как сайтът изглежда пълен. - person amitkaz; 09.09.2009
comment
Мисля, че е малко рисковано да се изпълняват задачи в производствената среда, които изтриват много данни.. различна база данни е по-безопасна. също така, по-малко замърсяване на данните - person amitkaz; 09.09.2009

Ако желаете да използвате Authlogic, можете да погледнете това, след това всеки X часа можете да прегледате базата данни за потребители, които започват с anonymous_ и да изтриете записи, които са свързани с тях.

person Garrett    schedule 08.09.2009
comment
както отговорих на ryan, не се чувства безопасно масово да се създават/изтриват данни по този начин, още повече, че са в легитимните потребителски акаунти.. Мисля, че просто казва на Мърфи: виж тук - място, където всичко може да се обърка ужасно ! :) - person amitkaz; 09.09.2009
comment
Много хора използват този метод, сигурен съм, че е обмислен преди да бъде изпълнен. - person Garrett; 09.09.2009

Просто направете отделен демо сайт, който работи точно като производствения, но DB се нулира веднъж на час, за да изчисти примерни данни. Единствената промяна, която трябва да направите, е банер в горната част на всяка страница, който казва, че това е демонстрация. Има няколко начина да го направите (променете темата на вашия сайт или може би използвайте рамки), но по принцип трябва да промените кода само на едно място, вместо в целия сайт.

person davr    schedule 09.09.2009

логическите символи AND и OR ?
person Alessandra Pereyra    schedule 09.09.2009

Можете да го внедрите като отделно приложение със собствена база данни в отделен домейн или поддомейн и след това да проверите домейна, за да решите какви опции трябва да са налични. Например, ако го поставите на demo.example.com, ще използвате:

if request.domain =~ /demo/

Ако използвате Capistrano, можете да го настроите да актуализира и двете приложения, когато внедрявате, така че да са синхронизирани.

person Roger Ertesvag    schedule 09.09.2009