我有一个模块化的Sinatra应用程序。我在我的配置块中设置了一些自定义变量,并想在我的模型中访问这些设置。从模型访问Sinatra设置
问题是,当我尝试从MyModel
访问我的自定义设置时,我得到一个NoMethodError
。标准设置似乎仍然工作正常。我该如何做这项工作?
# app.rb
require_relative 'models/document'
class App < Sinatra::Base
configure do
set :resource_path, '/xfiles/i_want_to_believe'
end
get '/' do
@model = MyModel.new
haml :index
end
end
# models/my_model.rb
class MyModel
def initialize
do_it
end
def do_it
...
settings.resource_path # no method error
...
settings.root # works fine
end
end
访问它为什么在设置作为参数没有通过?这似乎是在模型中直接引用'设置'的问题分离的问题。 – 2012-07-31 12:47:25
这是一个公平点。该设置是一个路径,指向应用程序资源(模型包装这些文件)。我想要一些类似rails的方法,所以我可以去'@m = MyModel.find“name_of_resource”'并让它工作。我宁愿不使用'MyModel.find“name_of_resource”,settings.resource_path'。我宁愿将find方法作为模型的一部分,而不是帮助器。也许我在这里与Sinatra战斗...... – Soup 2012-07-31 12:59:44
+1作为参数传递它。它可以做的最不容易的事情就是简化'do_it'方法的测试。 – 2012-07-31 13:15:14