2

这在站点中很常见——您有一个“演示”版本,其中包含一个充满数据/帖子/评论的访客帐户,您可以使用这些数据/帖子/评论,并且每隔几个小时重置一次所有数据,因此用户不会向演示站点发送垃圾邮件。

我想有另一个 Rails 环境“mysite_demo”并使用 cron 作业调用 rake 每 X 小时重置一次它的数据库,并填充种子数据。

然后我突然想到,在我的整个应用程序中,我必须检查我是否在“演示模式”下运行:例如,如果演示站点也有登录/注册页面,用户可能会注册,插入一些数据并且想知道为什么他的帐户在他再次登录后被删除......所以演示站点根本不应该有注册选项。

所以我想我会做一个代码的“演示”分支..有区别,只是在我去的时候合并更改......听起来有点矫枉过正。

想法?

4

9 回答 9

1

在我的应用程序中,我从一个固定的演示用户开始,其帐户每小时重置一次。该模型的某些内容并不完全正确-如果有多个用户同时访问演示,您可能会遇到一些奇怪的并发问题。如果用户正在进行演示并且您重置了演示帐户怎么办?发生什么了?

我不知道这个模型是否适合你,但我最终创建了一个全新的用户帐户,并在数据库中设置了一个演示标志 - 我还自动登录用户。这样用户就可以玩只要他们喜欢而且我不必担心在用户演示我的应用程序时数据会被删除/更改。我每天晚上运行一个 cron 作业,删除设置了演示标志的用户超过 24 小时。

于 2009-09-09T00:37:39.113 回答
0

如果演示版是从自己的数据库中运行的,它与真实的有什么不同?演示站点只是您的产品的一个实例。

只需清理数据库并根据需要重新部署演示。就这么简单还是我错过了什么?

于 2009-09-08T23:04:23.750 回答
0

然后我突然想到,在我的整个应用程序中,我必须检查我是否在“演示模式”下运行(例如,你不能在演示中注册新用户)并让网站做出相应的行为。

如果该站点处于演示状态,为什么用户做什么很重要?他们所做的任何事情都将在几个小时内被清除,因此他们将无法实际使用它。

听起来您正试图限制该网站,因此他们会付款。我不知道您的网站是做什么的,但如果它是基于主机的服务(存储和显示信息的网页),那么数据的有限生命周期应该会阻止擅自占地者。

如果您的网站做了可以在其他地方使用的东西,那么我可以看到限制它。一个示例可能是转换媒体格式或编写简历的服务。如果用户可以在 2 小时窗口内做一些有用的事情并离开它,那么您可能会考虑分支。

于 2009-09-08T23:12:31.537 回答
0

为什么不让用户创建一个帐户,即使它在一个小时内被删除?
这使他们可以看到脚本的注册过程如何工作至少一个小时,可能会在注册页面上显示该帐户仅在一个小时内有效。

只是我的想法

于 2009-09-08T23:29:21.093 回答
0

演示版中是否有其他与生产环境不同的功能?如果只是让用户注册的问题,你可以在生产中创建一个注册的模拟账户,并为人们提供用户名/密码。尽管这可能不是一个选项,具体取决于其他业务需求。

于 2009-09-08T23:34:21.773 回答
0

如果你愿意使用 Authlogic,你可以看看这个,然后每隔 X 小时你就可以在数据库中查看那些开始anonymous_并删除与他们相关联的记录的用户。

于 2009-09-08T23:37:28.303 回答
0

只需创建一个与生产站点完全相同的单独演示站点,但数据库每小时重置一次以清理示例数据。您需要做的唯一更改是每个页面顶部的横幅,上面写着它的演示。有几种方法可以做到这一点,(修改您的站点主题,或者可能使用框架)但基本上您应该只需要在一个地方更改代码,而不是整个站点。

于 2009-09-09T01:19:09.523 回答
0

您可以在 database.yml 上设置一个新的环境演示,对 User 表具有只读权限,以及一个额外的 demo_database。然后对您的代码进行一些检查,看看您的 RAILS_ENV 是否在 DEMO 上。

这样,您只需要使用相同的代码库并展示您喜欢的任何内容。

于 2009-09-09T03:17:12.673 回答
0

您可以将其作为具有自己的数据库的单独应用程序部署到单独的域或子域,然后检查域以确定哪些选项应该可用。例如,如果您将其放在 demo.example.com 上,您将使用:

if request.domain =~ /demo/

如果您使用 Capistrano,您可以将其设置为在部署时更新这两个应用程序,以便它们同步。

于 2009-09-09T05:07:39.117 回答