2013-11-20 55 views
1

因此,我嘗試在Rails中使用引擎來模擬Rest api後端以用於開發和測試目的,這樣我就不必依賴REST api了。當我遇到這個問題時,我有幾個問題想要理解。Rails使用引擎來模擬REST api後端服務

我猜測的想法是。首先讓我的引擎和我的Rails應用程序同步運行,並在我的引擎中,當我的Rails應用程序調用url rest調用時,有一個控制器句柄,它將呈現我在引擎中使用的json對象(模擬數據)。

  1. 發動機和導軌應用程序是否必須同時運行麒麟寶石?或者如果引擎可以只住在導軌的應用程序

  2. 我該如何重定向URL休息電話從我的Rails應用程序,這樣它去我的模擬引擎?我猜測一些與可尋址或路由有關的事情?

我跟隨[2]創建一個安裝的引擎,我希望如果我能得到關於這個話題,其中一些方向一樣東西都要

[1] http://edgeapi.rubyonrails.org/classes/Rails/Engine.html

[2 ] http://railscasts.com/episodes/277-mountable-engines?view=comments

在我的引擎

|controller 
|-data 
|--apple.json  
|-fruits_client 
|--apple_controller.rb 
|lib 
|-fruist_client 
|--apple.rb 
|--engine.rb 
+0

您是否將引擎安裝在路由文件中?例如 –

回答

1

你應該安裝你的引擎。

在主應用程序的路徑添加以下內容:

mount MyEngine::Engine, :as => 'my_engine' 

然後你可以使用:my_engine.something_url

你可以在任何地方設置安裝點。如果您想使用相同的根主應用程序,你可以使用:

mount MyEngine::Engine, :at => '/', :as => 'my_engine' 

如果你想使用一個命名空間來調用你的引擎,例如「成果」:

mount MyEngine::Engine, :at => '/fruits', :as => 'my_engine' 

要使用引擎你應該有你的Gemfile中的路徑。它應該看起來像

gem 'my_engine', :path => '/path/to/my_engine' 
+0

。如果我有這個其餘的調用get(http:// localhost:8080/fruits/apple)。理想情況下,我安裝發動機後。我只需將我的引擎設置爲基本URL(http:// localhost:8080)並調用http:// localhost:8080.fruits/apple而不是。我可以打電話/水果/蘋果,並獲取數據?所以我不需要改變任何東西,其餘的問題請致電 – AirWick219

+0

。我在哪裏將我的引擎放入我的Rails應用程序中? – AirWick219

+0

您可以使用安裝MyEngine :: Engine,at =>'/',:as =>'my_engine' –