如何构建可在运行时编辑的Rails站点?

时间:2011-01-07 13:06:13

标签: ruby-on-rails ruby

我正在编写一个Rails应用程序,用于“搜索/导航”其他一些网站和网络服务以获取内容。我正在使用MechanizeSavon进行重击。

但考虑到网络的动态特性,我想让网站的管理员用户可以编辑这些内容,而不是要求我发布网站的新版本。

实际的抓取线程使用daemons gem与网站异步发生。

我的要求是:

  1. 认为抓取/网络服务调用代码非常简单,最简单的方法是让管理员可以编辑整个类。
  2. 保留抓取代码的历史记录 - 以便在引入问题时我们可以轻松恢复。
  3. 最初使用文件系统中的代码,但只要编辑并存储在某处,就可以使用该代码。
  4. 我在想我的选择是:

    1. 将代码存储在db中(包含旧版本的历史记录表)
    2. 将代码存储在某个私有git仓库中,并将access that存储到历史记录/最新版本中。
    3. 我认为git路线可能最简单,因为它的存在理由是跟踪文件历史... 但也许有一个宝石/插件可以为我完成所有这些,开箱即用?

      提前感谢任何提示/建议。 〜克里斯

3 个答案:

答案 0 :(得分:1)

如果您的网站已经受到源代码管理,并且如果您在mod_rails / passenger下运行,则可以按照以下步骤操作:

  1. 编辑抓取代码
  2. 在本地提交更改
  3. touch yourapp/tmp/restart.txt
  4. 应该为您提供更改历史记录,您不必重新部署。

    更安全,但不确定您是否可以在测试/开发服务器上 :进行更改,在本地提交,测试,然后在生产服务器上,git pull然后touch tmp/restart.txt

答案 1 :(得分:1)

我真的希望你没有做what's talked about here ...

之类的事情

假设你正在做一个合适的mixin,曾经有一个叫做“acts_as_versioned”的宝石会做你想做的事情。已经有一段时间了,所以我不知道它是否已经变成了插件,或者它是否被放弃了。基本上它使用的过程是为您的版本化表提供组合键。

您的数据库将具有以下结构:

  • 键列(记录的ID)
  • 版本列(记录版本的ID)
  • 所有记录属性

假设你有一个脚本表,你想要的脚本有三个版本。您的表格将包含以下记录:

  • 123,3,'#Be good now'
  • 123,2,'put“Hi”'
  • 123,1,'#Do not not bad'

获取最新版本就像

一样简单

Scripts.find:first,:conditions => {:id => 123},:order =>“version desc”

回滚就像删除最新版本一样简单,或者让另一个表格指向活动版本。这取决于你。

你的身份正确gitsubversionmercurial,公司在这方面要好得多。要提供支持,您只需按照以下步骤操作:

  1. 查看服务器上的脚本(使用标签,以便随时管理那里的内容)
  2. 设置一个cron作业,定期检查新脚本(例如每六个小时或任何你觉得舒服的东西)
  3. 您运行脚本的守护程序应自动运行新版本。

答案 2 :(得分:1)