【发布时间】:2015-03-02 00:38:26
【问题描述】:
我正在编写一个包含一堆类的 gem,其中一个是 Sinatra 类。在一个类中,我解析一个 SQL 文件以创建一个数组,其中包含一组分配给实例变量的值。我想获取这个实例变量并将其传递给我的 Sinatra 类,以便我可以打开浏览器并显示此信息。但是,我无法弄清楚如何做到这一点。到目前为止,我有这样的事情:
my_class.rb
class MyClass
def get_columns
# ...a bunch of code that parses, and ends up with an instance variable
@var1 = ['column1','column2']
end
def start_sinatra
%x(ruby sinatra_class.rb)
end
end
sinatra_class.rb
require 'sinatra/base'
require 'launchy'
class SinatraClass < Sinatra::Base
def open_browser
Launchy.open('http://localhost:4567')
end
get '/' do
@var1 = @var1
erb :index
end
post '/' do
erb :submit
end
run! if __FILE__ == $0
end
显然我知道这是不正确的。我想弄清楚的是如何从@var1 中获取从 MyClass 到 SinatraClass 的值,以便它们可以在我的索引 ERB 文件中使用。另外,我知道我的 hacky %x 命令不是从 MyClass 启动 Sinatra 的正确方法,但我想不出任何其他方法。这不起作用:
def start_sinatra
start = SinatraClass.new
start.run!
end
因为run! 不起作用,除非您从文件本身调用它(例如my_sinatra.rb)。
【问题讨论】:
-
不知道您要做什么,但是要将值传递给您正在运行的命令,使它们成为命令行参数,然后在您正在运行的文件中读取它们。跨度>
-
我该怎么做?能给我举个例子?问题是我不是从命令行启动 Sinatra。我正在使用 Thor,它开始实例化 MyClass 的一个实例。 MyClass 然后解析一堆数据,这些数据进入一个实例变量数组。然后我需要我的 MyClass 实例来启动 Sinatra,将该实例变量传递给它,并显示我在 MyClass 中解析的数据。我只是觉得必须有一种更简单的方法来做到这一点。