Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How could we separate grape api resources into multiple files?

Hi I am developing a simple api in ruby using intridea's grape. Let's say we have this:

class API_v1 < Grape::API
  resource :foo do
  end

  resource :bar do
  end

end

How could I make it so that the declaration for :foo and :bar are in separate files? Basically, I wanted to know if it is possible to have something similar to rails controllers where there are multiple files to organize the code.

I hope someone can give me an insight on how to achieve this.

like image 959
Lester Celestial Avatar asked Dec 05 '22 15:12

Lester Celestial


2 Answers

Ruby has open classes, so you should be able to simply move those to separate files.

# foo.rb
class API_v1 < Grape::API
  resource :foo do
  end
end

# bar.rb
class API_v1 < Grape::API
  resource :bar do
  end
end
like image 150
Sergio Tulentsev Avatar answered Feb 07 '23 21:02

Sergio Tulentsev


The README recommends you use mount:

class Foo < Grape::API
  resource :foo ... 
end

class Bar < Grape::API
  resource :bar ... 
end

class API < Grape::API
  mount Foo
  mount Bar
end
like image 26
dB. Avatar answered Feb 07 '23 19:02

dB.