如何在Rails引擎gem中绘制路由?

时间:2016-09-16 03:23:50

标签: ruby-on-rails ruby rubygems

在我正在构建的引擎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

配置/ 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

当我将此添加到我的测试应用程序并运行rake路线时,gem中定义的所有路线都不会显示在我的应用中。

我还尝试使用RailsDribbbleOauth::Engine.routes.draw安装它,然后将mount RailsDribbbleOauth::Engine, at: '/dribbble'添加到我的测试应用中,但结果是NameError: uninitialized constant RailsDribbbleOauth::Engine

非常感谢任何帮助,谢谢。

编辑:测试应用程序的Gemfile确实包含了gem。 Gem目前正在lib/engines/rails_dribbble_oauth的测试应用程序中开发。来自测试应用的Gemfile:gem 'rails-dribbble-oauth', path: 'lib/engines/rails_dribbble_oauth'。但是,rake routes不会产生gem中定义的任何路由。

1 个答案:

答案 0 :(得分: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'