2016-09-16 60 views
0

我在創建引擎寶石中繪製路線時遇到了很多麻煩。不知道我在做什麼錯誤...我一定已經嘗試過六打不同的事情了。目前我的寶石看起來是這樣的:如何在Rails引擎gem中繪製路線?

寶石結構:

├── Gemfile 
├── MIT-LICENSE 
├── README.md 
├── app 
│   └── controllers 
│    └── rails_dribbble_oauth 
│     └── main_controller.rb 
├── config 
│   └── routes.rb 
├── lib 
│   ├── rails_dribbble_oauth 
│   │   ├── engine.rb 
│   │   └── version.rb 
│   └── rails_dribbble_oauth.rb 
└── rails_dribbble_oauth.gemspec 

/app/controllers/rails_dribbble_oauth/main_controller.rb:

module RailsDribbbleOauth 
    class MainController < ::ApplicationController 
    # some instance methods 
    end 
end 

/lib/rails_dribbble_oauth/engine.rb:

module RailsDribbbleOauth 
    class Engine < ::Rails::Engine 
    isolate_namespace :RailsDribbbleOauth 
    end 
end 

lib/rails_dribbble_oauth.rb:

require "rails_dribbble_oauth/engine" 

module RailsDribbbleOauth 
end 

的config/routes.rb文件:

Rails.application.routes.draw do 
    get 'request',  to: 'main#request', as: "dribbble_oauth_request" 
    get 'callback', to: 'main#passthru', as: "dribbble_callback" 
end 

當我加入到我的測試應用程序並運行耙路線此,沒有創業板定義的路由的出現在我的應用程序。

我也嘗試使用RailsDribbbleOauth::Engine.routes.draw安裝它,然後將mount RailsDribbbleOauth::Engine, at: '/dribbble'添加到我的測試應用程序中,但這導致了NameError: uninitialized constant RailsDribbbleOauth::Engine

任何幫助真的很感激,謝謝。

編輯:測試應用程序的Gemfile包括寶石。 Gem目前正在測試應用程序lib/engines/rails_dribbble_oauth內開發。從測試應用程序的Gemfile:gem 'rails-dribbble-oauth', path: 'lib/engines/rails_dribbble_oauth'。但是,rake routes不會產生在gem中定義的任何路由。

+0

要補充發動機應用的Gemfile,如'gem'rails_dribble_oauth',路徑:'engines/rails_dribble_oauth'?如果是這樣,你在引擎中定義的任何模型應該可以從'rails console'訪問。 – Kris

+0

謝謝克里斯。我沒有在我的寶石中定義任何模型。是的,gemfile位於主應用程序的Gemfile中:'gem'rails-dribbble-oauth',路徑:'lib/engines/rails_dribbble_oauth''。 – mindplace

+0

您是否嘗試將它從lib中移出到RAILS_ROOT/engines,但是有時候lib處於LOAD_PATH中,Rails可能認爲這些文件映射到了Lib ::'命名空間中的類。 – Kris

回答

0

也許你需要給發動機添加到測試應用Gemfile,例如:

# if the engines in at RAILS_ROOT/engines 
gem 'rails_dribble_oauth', path: 'engines/rails_dribble_oauth' 

# somewhere else 
gem 'rails_dribble_oauth', path: '~/dev/rails_dribble_oauth' 
+0

感謝您的輸入。測試應用程序中的我的gemfile已經包含gem,它正在該測試應用程序的lib文件夾中開發。從gemfile:'gem'rails-dribbble-oauth',路徑:'lib/engines/rails_dribbble_oauth''。 – mindplace