augmentations
文件大小: unknow
源码售价: 5 个金币 积分规则     积分充值
资源说明:Rails plugin that provides a simple API for extending a model/class from a module.
# Augmentations

*Augmentations* is a tiny Rails plugin to easily extend a model (or other class) with instance methods and class methods, as well as running class methods like `belongs_to` at extend time.

It's basically like `include`ing a module, but you can also define class methods and call class methods as you would in the class itself, without (ab)using the `self.included` hook and thus with less boilerplate.

Use it like

    class User < ActiveRecord::Base
      augment Shared::Pingable, User::PasswordResetExtension
    end

with modules like

    module User::PasswordResetExtension
      augmentation do

        has_many :password_resets

        def self.a_class_method
          # …
        end

        def an_instance_method
          # …
        end

      end
    end

This particular module would be found in `app/models/user/password_reset_extension.rb`.

(If you want to weird things up in the name of fewer lines of code, the Ruby parser will accept

    module User::PasswordResetExtension augmentation do

        …

    end end

too.)


## Module parameters

Want support for module parameters, like

    augment Shared::Pingable, pong: false

? [Try this!](https://github.com/henrik/augmentations/issues/1#issuecomment-605628636)


## Credits and license

By [Henrik Nyh](http://henrik.nyh.se/) for [DanceJam](http://dancejam.com) under the MIT license:

>  Copyright (c) 2008 Henrik Nyh
>
>  Permission is hereby granted, free of charge, to any person obtaining a copy
>  of this software and associated documentation files (the "Software"), to deal
>  in the Software without restriction, including without limitation the rights
>  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
>  copies of the Software, and to permit persons to whom the Software is
>  furnished to do so, subject to the following conditions:
>
>  The above copyright notice and this permission notice shall be included in
>  all copies or substantial portions of the Software.
>
>  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
>  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
>  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
>  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
>  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
>  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
>  THE SOFTWARE.

本源码包内暂不包含可直接显示的源代码文件,请下载源码包。