Ruby on rails 如何在gemi';我在做什么?
我正在为Rails制作宝石。我需要访问ApplicationController,因为我要玩弄它。绝对没有任何在线信息提供有关如何使用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插件有很多信息 生成的
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)
。我明白了。有没有什么地方我不必像你那样把它包括进去?我已经测试并确认了您的产品确实有效:)