Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.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 如何在gemi';我在做什么?_Ruby On Rails_Ruby_Gem - Fatal编程技术网

Ruby on rails 如何在gemi';我在做什么?

Ruby on rails 如何在gemi';我在做什么?,ruby-on-rails,ruby,gem,Ruby On Rails,Ruby,Gem,我正在为Rails制作宝石。我需要访问ApplicationController,因为我要玩弄它。绝对没有任何在线信息提供有关如何使用gempec的信息,然后设法在我的gem中访问Rails 我想最终的目标是能够与Rails对话,比如: module Rails module ActionController #code end end 如果您专门为Rails开发gem,我强烈建议您使用Rails插件new gem_name生成初始支架。关于开发rails插件有很多信息 生成的

我正在为Rails制作宝石。我需要访问ApplicationController,因为我要玩弄它。绝对没有任何在线信息提供有关如何使用
gempec
的信息,然后设法在我的gem中访问Rails

我想最终的目标是能够与Rails对话,比如:

module Rails
  module ActionController
    #code
  end
end

如果您专门为Rails开发gem,我强烈建议您使用Rails插件new gem_name生成初始支架。关于开发rails插件有很多信息

生成的初始结构如下所示:

gem_name
  gem_name.gemspec
  lib/
    gem_name.rb
    gem_name/
      version.rb
      engine.rb # if generated using --mountable
# lib/gem_name.rb
require 'gem_name/controller_extensions'
module GemName
end

# lib/gem_name/controller_extensions.rb
module GemName::ControllerExtensions
  # bleh
end

# dummy_application/app/application_controller.rb
class ApplicationController < ActionController::Base
  include GemName::ControllerExtensions
end
整个rails环境变得可用[编辑:加载gem后],因此扩展
ApplicationController
可以这样做:

gem_name
  gem_name.gemspec
  lib/
    gem_name.rb
    gem_name/
      version.rb
      engine.rb # if generated using --mountable
# lib/gem_name.rb
require 'gem_name/controller_extensions'
module GemName
end

# lib/gem_name/controller_extensions.rb
module GemName::ControllerExtensions
  # bleh
end

# dummy_application/app/application_controller.rb
class ApplicationController < ActionController::Base
  include GemName::ControllerExtensions
end
#lib/gem_name.rb
需要“gem\u名称/控制器\u扩展”
模块名称
结束
#lib/gem_name/controller_extensions.rb
模块名称::ControllerExtensions
#呜呜
结束
#虚拟应用程序/app/application\u controller.rb
类ApplicationController

看看这个。

如果您是专门为Rails开发gem,我强烈建议您使用
Rails插件new gem\u name
生成初始支架。关于开发rails插件有很多信息。@nicooga Ok。我想,一旦我这样做了,我应该专注于使插件成为一个gem,对吗?插件生成器生成gempec:)。啊,这就像在rubygems上运行一样简单?是的,它还生成一个带有一些有用命令的Rakefile,如
release
所以,如果我可以访问ApplicationController,我的宝石基本上就完成了。但是,根据您上面写的内容和我在
模块GemName::ControllerExtensions
中的代码(我用自己的GemName适当地交换了GemName)。但是,当我尝试在提供的测试文件夹内的虚拟应用程序中运行
rails s
时,我遇到了一个错误。错误是:
/Path/To/Gem/lib/Gem/controller\u extension.rb:15:in::未初始化常量ApplicationController(namererror)
。我明白了。有没有什么地方我不必像你那样把它包括进去?我已经测试并确认了您的产品确实有效:)