application_helper.rb で定義されたメソッドがあります。
def bayarea_cities
[
['San Francisco', 'San Francisco'],
['Berkeley', 'Berkeley'],
...
]
end
また、Grape を使用して API を作成しています。これは、Rails アプリの外部にある独自のモジュールにあります。
module FFREST
class API_V2 < Grape::API
...
Grape は Rack アプリなので、Rails モジュールへの通常のアクセスはありません。API メソッドの 1 つで「bayarea_cities」メソッドを呼び出そうとすると、未定義の変数またはメソッド エラーが発生します。「include ApplicationHelper」で ApplicationHelper モジュールをインクルードしようとしましたが、うまくいきませんでした。
APIクラス内でこれにアクセスするにはどうすればよいですか?
アップデート:
Deefourさん、更新ありがとうございます。ヘルパー モジュールに追加extend self
し、メソッドを (モジュール メソッドではなく) インスタンス/ミックスイン メソッドとして参照しましたが、それでも同じエラーが発生します。私の lib/helpers.rb ファイルには次のものがあります。
module Helpers
extend self
def bayarea_cities
[
'San Francisco',
'Berkeley',
'Danville',
'Oakland',
'Daly City',
'Sunnyvale'
]
end
def us_states
['CA']
end
end
私のAPIファイルには次のものがあります:
module FFREST
class API_V1 < Grape::API
include Helpers
version 'v1', :using => :header, :vendor => 'feedingforward'
...
もちろん、 config/initializers/helpers.rb ファイルがあります。require "helpers"
しかし、たとえば にアクセスして US states API メソッドを呼び出すと、次のhttp://localhost:5000/api/states
ようになります。
undefined local variable or method `us_states' for #<Grape::Endpoint:0x007fd9d1ccf008>
何か案は?