Вопрос

Это довольно распространено на сайтах: у вас есть «демо» версия с гостевой учетной записью, полной данных/публикаций/комментариев, с которыми вы можете играть, и все данные сбрасываются каждые несколько часов, чтобы пользователи не спамили демо-сайт.

Я думал создать другую среду Rails, «mysite_demo», и использовать задание cron для вызова rake для сброса базы данных каждые X часов и заполнения исходных данных.

Затем мне пришло в голову, что мне придется проверять все мое приложение, работаю ли я в «демо-режиме»:Например, если на демонстрационном сайте также есть страница входа/регистрации, пользователь может зарегистрироваться, вставить некоторые данные и задаться вопросом, почему его учетная запись удаляется после повторного входа в систему.поэтому на демо-сайте вообще не должно быть опции регистрации.

Поэтому я подумал, что сделаю «демо»-ветку кода..с разницей и просто объединяю изменения по ходу...звучит как перебор.

идеи?

Это было полезно?

Решение

В своем приложении я начал с фиксированного демонстрационного пользователя с учетной записью, которая сбрасывается каждый час.Что-то в этой модели было не совсем правильно — если бы несколько пользователей одновременно запускали демо-версию, вы могли бы столкнуться с некоторыми странными проблемами параллелизма.А что, если пользователь находится в процессе демо-аккаунта, а вы сбросили демо-счет?Что происходит?

Я не знаю, подойдет ли вам эта модель, но в итоге я создал совершенно новую учетную запись пользователя с установленным в базе данных демонстрационным флагом — я также автоматически авторизую пользователя.Таким образом, пользователь может играть столько, сколько ему хочется, и мне не нужно беспокоиться об удалении/изменении данных, пока пользователь демонстрирует мое приложение.Каждую ночь я запускаю задание cron, которое удаляет пользователей с установленным демонстрационным флагом старше 24 часов.

Другие советы

Если демо-версия работает из собственной базы данных, чем она отличается от реальной?Демо-сайт — это всего лишь экземпляр вашего продукта.

Просто очистите БД и повторно разверните демо-версию по мере необходимости.Это все так просто или я что-то упускаю?

Затем меня осенило, что мне придется проверять во всем своем приложении, работает ли я в «демо-режиме» (например, вы не можете зарегистрировать нового пользователя в демо-версии), и заставить сайт вести себя соответствующим образом.

Если сайт находится в демо-версии, какое значение имеет то, что делают пользователи?Все, что они сделают, будет удалено через несколько часов, и они не смогут с этим работать.

Похоже, вы пытаетесь заблокировать сайт, чтобы они заплатили.Я не знаю, что делает ваш сайт, но если это хост-сервис (веб-страница, на которой хранится и отображается информация), то ограниченный срок жизни данных должен отпугивать скваттеров.

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

Почему бы не позволить пользователю создать учетную запись, даже если она будет удалена через час?
Это позволяет им увидеть, как работает процесс регистрации скрипта, хотя бы в течение часа, возможно, выдать сообщение на странице регистрации о том, что учетная запись действительна только в течение часа.

Просто мои мысли

Есть ли какие-либо другие функции, отличающиеся в демо-версии от производственной среды?Если это просто проблема регистрации пользователя, вы можете просто создать зарегистрированную демо-учетную запись в рабочей среде и предоставить людям имя пользователя и пароль.Хотя это может быть не вариант в зависимости от других бизнес-требований.

Если вы хотите использовать Authlogic, вы можете взглянуть на этот, то каждые X часов вы сможете просматривать базу данных на предмет пользователей, имена которых начинаются с anonymous_ и удалить записи, связанные с ними.

Просто создайте отдельный демонстрационный сайт, который будет работать точно так же, как рабочий, но БД будет сбрасываться раз в час для очистки данных примера.Единственное изменение, которое вам нужно внести, — это баннер вверху каждой страницы с надписью «Это демо».Есть несколько способов сделать это (изменить тему сайта или, возможно, использовать фреймы), но в основном вам нужно будет изменить код только в одном месте, а не по всему сайту.

Вы можете настроить новую демонстрационную среду в своем файле data.yml с правами только на чтение для таблицы User и дополнительной demo_database.Затем проверьте свой код, чтобы увидеть, находится ли ваш RAILS_ENV в DEMO.

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

Вы можете развернуть его как отдельное приложение с собственной базой данных в отдельном домене или поддомене, а затем проверить домен, чтобы решить, какие параметры должны быть доступны.Например, если вы разместите его на demo.example.com, вы должны использовать:

if request.domain =~ /demo/

Если вы используете Capistrano, вы можете настроить его на обновление обоих приложений при развертывании, чтобы они были синхронизированы.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top