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

标签 ruby-on-rails ruby

我正在编写一个 Rails 应用程序,可以“抓取/导航”一些其他网站和网络服务的内容。我正在使用 MechanizeSavon做繁重的工作。

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

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

我的要求是:

  1. 认为抓取/网络服务调用代码非常简单,最简单的方法是让管理员可以编辑整个类。
  2. 保留抓取代码的历史记录 - 以便我们在遇到问题时可以很容易地恢复。
  3. 最初使用文件系统中的代码,但一旦对其进行编辑并存储在某处,就改用该代码。

我认为我的选择是:

  1. 将代码存储在数据库中(带有旧版本的历史表)
  2. 将代码存储在某个地方的私有(private) git 存储库中并 access that历史/最新版本。

我认为 git 路由可能是最简单的,因为它存在的理由是跟踪文件历史... 但也许有一个 gem/插件可以为我完成所有这些,开箱即用?

提前感谢您提供任何提示/建议。 ~克里斯

最佳答案

我真的希望你不会做类似 what's talked about here 的事情...

假设您正在做一个适当的混合,曾经有一个名为“acts_as_versioned”的 gem 可以做您想要的事情。好久没用了,不知道是改成了插件还是废弃了。本质上,它使用的过程是为您的版本化表提供组合键。

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

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

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

  • 123, 3, '#Be good now'
  • 123, 2, '输入“你好”'
  • 123, 1, '#Do not be bad'

获取最新版本就像

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

回滚就像删除最新版本一样简单,或者让另一个表带有指向事件版本的指针。这取决于你。

您是正确的,gitsubversionmercurial 和公司在这方面会做得更好。要提供支持,您只需按照以下步骤操作:

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

关于ruby-on-rails - 如何构建可在运行时编辑的 Rails 站点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4625729/

相关文章:

ruby-on-rails - 在登录之前和之后保留 Rails 4 设计 session ID

ruby-on-rails - Ruby on Rails 和 Rake 问题:未初始化的常量 Rake::DSL

mysql - 使用 LOAD DATA INFILE 导入 CSV?

ruby-on-rails - 两个不同的项目,一个使用 Redis,另一个使用 MongoDB?

ruby - 如何将 Rubymine IDE 调试器附加到 shell 进程?

ruby-on-rails - 将多个验证包装在上下文中

ruby-on-rails - 在 Rails 中建模图形的模式

python - 解析 Azure Blob 内容-MD5

jquery - 将 json 对象解析为 ruby​​ 对象时出错

ruby-on-rails - 乘客未在 80 端口启动