2016-06-15 7 views
2

GrapeでAPIを書くときに、helpersマクロを使用するのは、モジュールを追加するか、メソッドを追加するだけですか?例えばGrape APIでヘルパーを使用するのはなぜですか?

、あなたはモジュール内のメソッドを定義し、そのようなブドウでヘルパーとしてそれらを含めることができます。

module HelperMethods 
    def useful_method(param) 
    "Does a thing with #{param}" 
    end 
end 

class HelpersAPI < Grape::API 
    helpers HelperMethods 

    get 'do_stuff/:id' do 
    useful_method(params[:id]) 
    end 
end 

しかし、なぜちょうどこれをしませんか?

class IncludeAPI < Grape::API 
    include HelperMethods 

    get 'do_stuff/:id' do 
    useful_method(params[:id]) 
    end 
end 

私はあなたがヘルパーメソッドを提供することを目的としてHelperMethodsモジュールを含めていることをもう少し明示的だと思うが、それは別の構文を追加するために弱い理由のように思えます。

helpersと通常のincludeを使用する利点/理由は何ですか?

+1

、 'helpers'も、ネストされた名前空間内のモジュールを含みます。 – Stefan

+0

これで問題はありませんが、ネストされたモジュールを必要とするトップレベルモジュールの標準モジュールパターンを使用するだけで、モジュールでも同様に行うことができます。それほど意外ではない。 – huntmaster

答えて

0

標準ルビモジュールではできないヘルパーを使って、再利用可能なパラメータを定義することができます。 IIRC

class API < Grape::API 
    helpers do 
    params :pagination do 
     optional :page, type: Integer 
     optional :per_page, type: Integer 
    end 
    end 

    desc 'Get collection' 
    params do 
    use :pagination # aliases: includes, use_scope 
    end 
    get do 
    Collection.page(params[:page]).per(params[:per_page]) 
    end 
end 

https://github.com/ruby-grape/grape#helpers

+0

それは問題ありませんが、なぜ私はこれをメソッドに使用するのですか?私の例では、ヘルパーマクロでパラメータを設定していません。 – huntmaster

関連する問題