我在創建引擎寶石中繪製路線時遇到了很多麻煩。不知道我在做什麼錯誤...我一定已經嘗試過六打不同的事情了。目前我的寶石看起來是這樣的:如何在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中定義的任何路由。
要補充發動機應用的Gemfile,如'gem'rails_dribble_oauth',路徑:'engines/rails_dribble_oauth'?如果是這樣,你在引擎中定義的任何模型應該可以從'rails console'訪問。 – Kris
謝謝克里斯。我沒有在我的寶石中定義任何模型。是的,gemfile位於主應用程序的Gemfile中:'gem'rails-dribbble-oauth',路徑:'lib/engines/rails_dribbble_oauth''。 – mindplace
您是否嘗試將它從lib中移出到RAILS_ROOT/engines,但是有時候lib處於LOAD_PATH中,Rails可能認爲這些文件映射到了Lib ::'命名空間中的類。 – Kris