5

モジュール式のSinatraアプリがあります。configureブロックでいくつかのカスタム変数を設定していて、モデルでこれらの設定にアクセスしたいと考えています。

問題は、NoMethodErrorからカスタム設定にアクセスしようとすると、が表示されることMyModelです。ただし、標準設定は引き続き正常に機能するようです。どうすればこれを機能させることができますか?

# 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
4

2 に答える 2

14

私はあなたが経由してそれにアクセスできるはずだと思います

Sinatra::Application.settings.documents_path
于 2014-09-03T08:42:04.997 に答える
3

私はやった:

#document.rb
class Document
  def self.documents_path=(path)
    @documents_path = path
  end
  def self.documents_path
    @documents_path
  end
  ...
end

#app.rb
configure do
  set :documents_path, settings.root + "/../documents/" 
  Document.documents_path = settings.documents_path
end

次に、findメソッド内でDocument.documents_pathを使用します。

于 2012-08-25T12:17:17.563 に答える