Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何在Rails引擎gem中绘制路线?_Ruby On Rails_Ruby_Rubygems - Fatal编程技术网

Ruby on rails 如何在Rails引擎gem中绘制路线?

Ruby on rails 如何在Rails引擎gem中绘制路线?,ruby-on-rails,ruby,rubygems,Ruby On Rails,Ruby,Rubygems,在我正在建造的引擎宝石中绘制路线时遇到了很多麻烦。不知道我做错了什么…我一定已经试过半打不同的东西了。目前我的宝石看起来像这样: 创业板结构: ├── Gemfile ├── MIT-LICENSE ├── README.md ├── app │   └── controllers │   └── rails_dribbble_oauth │   └── main_controller.rb ├── config │   └── routes.rb ├── lib │  

在我正在建造的引擎宝石中绘制路线时遇到了很多麻烦。不知道我做错了什么…我一定已经试过半打不同的东西了。目前我的宝石看起来像这样:

创业板结构:

├── 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\u dribble\u oauth/main\u controller.rb:

module RailsDribbbleOauth
  class MainController < ::ApplicationController
    # some instance methods
  end
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
当我将其添加到我的测试应用程序中并运行rake路由时,gem中定义的路由都不会出现在我的应用程序中

我还尝试使用
RailsDribbleOAuth::Engine.routes.draw
,然后将
mount RailsDribbleOAuth::Engine(位于“/Dribble”
)添加到我的测试应用程序中,但这导致了
NameError:未初始化常量RailsDribbleOAuth::Engine

非常感谢您的帮助,谢谢


编辑:测试应用程序的gem文件确实包含gem。Gem目前正在测试应用程序的
lib/engines/rails\u dribble\u oauth
中开发。从测试应用程序的Gemfile:
gem'rails-dribble-oauth',路径:'lib/engines/rails\u-dribble\u-oauth'
。不过,
rake路由
不会产生gem中定义的任何路由

可能需要将引擎添加到测试应用程序
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'

可能需要将引擎添加到测试应用程序
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'

是否将引擎添加到应用程序gem文件中,例如,
gem'rails\u dribble\u oauth',path:'engines/rails\u dribble\u oauth
?如果是这样,您在引擎中定义的任何型号都应该可以从
rails控制台
访问。谢谢。我没有在我的gem中定义任何模型。是的,gemfile位于主应用程序的gemfile:
gem'rails-dribble-oauth',path:'lib/engines/rails\u-dribble\u-oauth'
。您是否尝试过将其从lib移到rails\u-ROOT/engines,这是一个很长的尝试,但有时lib位于LOAD\u路径,rails可能会认为文件映射到
lib:
命名空间中的类。谢谢您的提示。移动了gem并更改了gem文件中的路径,但在
rake routes
中没有任何更改。我认为您的错误与您如何定义路由无关,但无论出于何种原因,父应用程序都没有加载引擎。这一点在
未初始化的常量railsdribbleoauth::Engine
中很明显,您需要首先修复它。只要添加引擎,只要它是由
rails插件生成的
,就意味着它将被需要并集成到父应用程序中。是否有文件
lib/rails\u dribble\u oauth/engine.rb
?是否将引擎添加到应用程序gem文件中,例如
gem'rails\u dribble\u oauth',路径:'engines/rails\u dribble\u oauth
?如果是这样,您在引擎中定义的任何型号都应该可以从
rails控制台
访问。谢谢。我没有在我的gem中定义任何模型。是的,gemfile位于主应用程序的gemfile:
gem'rails-dribble-oauth',path:'lib/engines/rails\u-dribble\u-oauth'
。您是否尝试过将其从lib移到rails\u-ROOT/engines,这是一个很长的尝试,但有时lib位于LOAD\u路径,rails可能会认为文件映射到
lib:
命名空间中的类。谢谢您的提示。移动了gem并更改了gem文件中的路径,但在
rake routes
中没有任何更改。我认为您的错误与您如何定义路由无关,但无论出于何种原因,父应用程序都没有加载引擎。这一点在
未初始化的常量railsdribbleoauth::Engine
中很明显,您需要首先修复它。只要添加引擎,只要它是由
rails插件生成的
,就意味着它将被需要并集成到父应用程序中。是否有文件
lib/rails\u dribble\u oauth/engine.rb
?感谢您的输入。测试应用程序中的我的gemfile已经有gem,它正在该测试应用程序的lib文件夹中开发。从gemfile:
gem'rails-dribble-oauth',路径:'lib/engines/rails\u-dribble\u-oauth'
。感谢您的输入。测试应用程序中的我的gemfile已经有gem,它正在该测试应用程序的lib文件夹中开发。从gemfile:
gem'rails-dribble-oauth',路径:'lib/engines/rails\u-dribble\u-oauth'
# 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'