2

現在、Rack と Sinatra を使用して Ruby アプリを構築していますが、メインのアプリ ファイル以外に実装されているルートの使用に失敗しています。私の最初の試みは次のようなものでした:

メインファイルで:

require 'sinatra'
require 'lib/web'

module NoCI
  class Main < Sinatra::Base
    include NoCI::Web
    load 'lib/web.rb'
  end
end

lib/web.rb: require 'sinatra'

module NoCI
  module Web
    get '/' do
      "Hello World"
    end
  end
end

しかし、うまくいきませんでした。次に、メイン クラスのサブクラスにルートを配置することについて読みました。どちらも成功しません。ヒント、私が見逃しているものはありますか?

更新:「require」、「include」、および「load」を試し、考えられるすべての組み合わせを組み合わせましたが、何もうまくいきませんでした。

4

1 に答える 1

4

includedフックを使用して、必要なものを実装できます。

require 'sinatra'
require 'lib/web'

module NoCI
  class Main < Sinatra::Base
    include NoCI::Web
  end
end

lib/web.rb

module NoCI
  module Web
    def self.included(base)
      base.get '/' do
        'Hello World!'
      end
    end
  end
end

このモジュールをasでインクルードすると、内部のコードincludedが実行されます。NoCI::Basebase

于 2012-06-02T11:40:23.000 に答える