你能解释一下吗?我想为我自己创造一个宝石,只是为了自学。
为此,我在'lib'文件夹中写了gem的代码,我可以在我的应用程序中测试它。
目前,我有下一个问题:
现在我已经扩展了我的用户模型,如下所示:
#app/models/user.rb
class User < ActiveRecord::Base
require 'auth'
...
#lib/auth.rb
class User
require 'digest'
before_save :encrypt_password
def xxx
....
是对的吗?
目前,我需要扩展应用程序控制器并添加另一个应用程序布局,但不知道如何。
答案 0 :(得分:1)
如果您愿意,可以查看gem I made
-
<强>宝石强>
Rails gems基本上只是Rails应用程序的zip文件
当你“安装”rails gem时,gem中的gem文件实际上会被放入你的Rails应用程序中。以我们的宝石为例:
安装gem时,以红色标记的文件夹将插入到Rails应用程序中。你看不到他们,但他们会在那里
<强>引擎强>
我认为大多数Rails gems
都是engines
:
这意味着无论何时创建gem
,您所做的只是创建一个特定的功能,可以根据需要应用于您的应用程序
gem将创建一个module
,它将包装您gem
的所有功能。此module
将在您创建的lib
文件中定义,因此您可以通过继承此模块来扩展gem
的功能
观看/控制器
要在您的应用中创建views
/ controllers
,您需要记住我所说的内容 - 您gem
中的文件将被放入您的应用
考虑到这一点,这样做的方法是创建一个/app
文件夹,然后将views
或controllers
目录放在那里:
您基本上需要创建从您在gem的lib
目录中定义的模块继承的目录:
-app
|-controllers
|--exception_handler
|---exception_controller.rb
|- views
|-- exception_handler
|--- exception
|---- show.html.erb
-lib
|-exception_handler.rb #-> ExceptionHandler module
这与您namespace路线
完全相同-
当我创建了一个宝石时,你最好直接和我谈谈这个过程。如果您想进一步讨论,可以发表评论