tuxedo_decorate 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 28fac7d01876b72c56782e3d42056e8f73b8443d
4
- data.tar.gz: 761815fecefe9b4cc6b52e5ab03714990c0d66d3
3
+ metadata.gz: 17ba5db3f56262006be9c6714471023d40461507
4
+ data.tar.gz: 8498c3544d4f423dca7cb43095caf2c9f06c305d
5
5
  SHA512:
6
- metadata.gz: 7cbadf52a72f779634dfb3e169bb0d91d37c1b040a2e9877c9cbf640907089d393feeec600ad39b65c25bc84a92bde21ab12bfb980aa14a74f57ec6baa196cd0
7
- data.tar.gz: e5991af893557e64301feb44803c0f5e442786bad9dcf72e931366e1eda71dcbd388a714976a123907b1f0011237a297d5f0a5616f325fcc0aa2d917204a08bd
6
+ metadata.gz: 055e6519ee3e865a432324ca23e1a2c9edc988564ae2fa96c3c08770c8d09bb0dcb0c4010a62f4f6de01038f6c439a5c6127b4f762b08585ef1f2ac1c98e65db
7
+ data.tar.gz: ce393d9548283440656c317e97b0e68337090a07547912b2f9f0a92d4f0d6b746b38f20a985fe4f7128291ab2fc37556b6a4723020f707eb79a94f4e51357951
data/CHANGELOG.md CHANGED
@@ -2,6 +2,9 @@
2
2
  ## Unreleased
3
3
  - Add your entry here!
4
4
 
5
+ ## v0.4.0
6
+ - Fixes #3: Using `alias_method` instead of `define_method` to improve performance
7
+
5
8
  ## v0.3.0
6
9
  - The born of the changelog
7
10
  - Refactored Tuxedo to not use `AS::Concern`, this allows to support rails 4.0 and up.
data/Gemfile CHANGED
@@ -12,4 +12,5 @@ gem 'rubocop', '~> 0.35.0'
12
12
 
13
13
  group :test do
14
14
  gem 'codeclimate-test-reporter', require: false
15
+ gem 'benchmark-ips', require: false
15
16
  end
data/README.md CHANGED
@@ -1,6 +1,7 @@
1
1
  # Tuxedo Decorate
2
2
  [![Build Status](https://travis-ci.org/playpasshq/tuxedo.svg)](https://travis-ci.org/playpasshq/tuxedo)
3
3
  [![Code Climate](https://codeclimate.com/github/playpasshq/tuxedo/badges/gpa.svg)](https://codeclimate.com/github/playpasshq/tuxedo)
4
+ [![Test Coverage](https://codeclimate.com/github/playpasshq/tuxedo/badges/coverage.svg)](https://codeclimate.com/github/playpasshq/tuxedo/coverage)
4
5
  [![Inline docs](http://inch-ci.org/github/playpasshq/tuxedo.png)](http://inch-ci.org/github/playpasshq/tuxedo)
5
6
  [![Gem Version](https://badge.fury.io/rb/tuxedo_decorate.svg)](https://badge.fury.io/rb/tuxedo_decorate)
6
7
 
@@ -216,9 +217,11 @@ After checking out the repo, run `bin/setup` to install dependencies. You can al
216
217
  To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
217
218
 
218
219
  ## Contributing
219
-
220
- Bug reports and pull requests are welcome on GitHub at https://github.com/playpasshq/tuxedo. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](contributor-covenant.org) code of conduct.
221
-
220
+ 1. Fork it
221
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
222
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
223
+ 4. Push to the branch (`git push origin my-new-feature`)
224
+ 5. Create new Pull Request
222
225
 
223
226
  ## License
224
227
 
@@ -1,3 +1,3 @@
1
1
  module Tuxedo
2
- VERSION = '0.3.0'.freeze
2
+ VERSION = '0.4.0'.freeze
3
3
  end
data/lib/tuxedo.rb CHANGED
@@ -79,10 +79,9 @@ module Tuxedo
79
79
 
80
80
  # @api private
81
81
  # This setup (after initialize) a new method for accessing the original object
82
- # alias_method wont work well with inheritance/includes/extends
83
82
  #
84
83
  def setup_alias_method(name = underscored_name)
85
- define_method(name) { object }
84
+ alias_method(name, :object)
86
85
  end
87
86
  end
88
87
 
@@ -0,0 +1,44 @@
1
+ require 'benchmark/ips'
2
+ require 'tuxedo'
3
+
4
+ class Country
5
+ attr_accessor :name, :id
6
+ end
7
+
8
+ class CountryDecorator < SimpleDelegator
9
+ def fancy_name
10
+ "fancy" + __getobj__.name
11
+ end
12
+ end
13
+
14
+ class CountryPresenter
15
+ include Tuxedo
16
+
17
+ def fancy_name
18
+ "fancy" + object.name
19
+ end
20
+ end
21
+
22
+ class CharlatanProxy
23
+ include Charlatan.new(:country)
24
+ def fancy_name
25
+ "fancy" + country.name
26
+ end
27
+ end
28
+
29
+ country = Country.new
30
+ country.name = "Tuxedo"
31
+ country.id = 111
32
+
33
+ tuxedo = CountryPresenter.new(country, nil)
34
+ simple_delegator = CountryDecorator.new(country)
35
+ charlatan = CharlatanProxy.new(country)
36
+
37
+ Benchmark.ips do |x|
38
+ x.report("simpleDelegator") { simple_delegator.fancy_name }
39
+ x.report("tuxedo") { tuxedo.fancy_name }
40
+ x.report("charlatan") { charlatan.fancy_name }
41
+
42
+ # Compare the iterations per second of the various reports!
43
+ x.compare!
44
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tuxedo_decorate
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jan Stevens
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-12-23 00:00:00.000000000 Z
12
+ date: 2016-01-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
@@ -84,6 +84,7 @@ files:
84
84
  - lib/tuxedo/config.rb
85
85
  - lib/tuxedo/railtie.rb
86
86
  - lib/tuxedo/version.rb
87
+ - spec/benchmarks/tuxedo_vs_simpledelegator.rb
87
88
  - spec/config_spec.rb
88
89
  - spec/helpers/helpers_spec.rb
89
90
  - spec/spec_helper.rb
@@ -112,7 +113,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
112
113
  version: '0'
113
114
  requirements: []
114
115
  rubyforge_project:
115
- rubygems_version: 2.4.5.1
116
+ rubygems_version: 2.5.1
116
117
  signing_key:
117
118
  specification_version: 4
118
119
  summary: Tuxedo simple presenter logic under 150 LOC