使用Rails为现有的CLI Ruby脚本构建GUI?

时间:2010-10-10 03:11:49

标签: ruby-on-rails ruby scripting

G'day伙计们,

目前有一点愚蠢的难题。我和一些伙伴已经构建了一个非常棒的ruby CLI脚本来解析和管理数据。它使用宝石,响应请求,功能齐全,功能强大。

我想知道是否有任何方法可以保存此类的单例实例并通过内置rails的Web界面与其进行交互。我有相当数量的rails体验,但不能为我的生活中的数字如何在web-app中创建单例实例以及如何使所有类/控制器普遍可访问。

我需要创建一个单例的原因是我需要加载一堆数据,这个小脚本会切换和更改。它是基于类的,但我不想将这些类移植到使用activerecord,如果我没有,因为它将所有内容保存在内存中(并且它不占用那么多内存)。

有没有什么方法可以导入脚本,使用必需的命令启动它,然后在Web应用程序的生命周期内将该对象保存在内存中,或者我是否必须将类/方法移植到AR或控制器方法?

干杯

1 个答案:

答案 0 :(得分:1)

您可以为对象添加包含Singleton包装器的初始化程序:

<强>配置/初始化/ foo_factory.rb:

require 'foo'
class FooFactory
  class << self
    def foo
      @@foo ||= Foo.new(lots, of, params)
    end
  end
end

现在可以使用其他任何地方:

FooFactory.foo.do_something

请注意,这是非常可怕的,你可能不应该这样做。但是,它会执行您想要的操作:建立仅在服务器启动时设置的全局单例。

更加类似可怕的黑客攻击只是将你的单个Foo实例分配给一个常量:

<强>配置/初始化/ foo_singleton.rb:

require 'foo'
FooSingleton = Foo.new(lots, of, params)

在其他地方,您可以使用:

FooSingleton.do_something

请注意,这基本上只比全局变量略好,因为你不能(轻松)改变FooSingleton的值。