activeadmin-poro-decorator 0.1.0 → 0.2.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: 88f812d5409d60050f58427243a77a0cf1d2f97e
4
- data.tar.gz: d2ada57dc5c19e865bcc03c7a01fdfbb0f8bc9dd
3
+ metadata.gz: 7e9f07ed03e9c43c64bb5f99cced2353e68f123e
4
+ data.tar.gz: 82a8836d3d5d0e1fcc0329d44af87c74effb17be
5
5
  SHA512:
6
- metadata.gz: f0f6d2b39020694f7404e66e50f6a9874cb8fabc8924e1ea0a0dfaa1b8e30a14ec877ddadd6a94a566e4987d93c374a9931663d8d499596a2f08605a6c0365d8
7
- data.tar.gz: db7dc203bba84a74b2c63fc1e3586e8badcbf28ede96ae7d791f9656b63da162e5c8a91db20c1cbe25e2876e4363341a6030c1c58482402a86c585daeda07059
6
+ metadata.gz: c6952ebdb187fd994eb6b5c0d7422e44d2671ccb5c8035786d571565711790bcce34adee7d903022847c57c069629bfb35a7c84624f8bf3e7ca672a0bc6766fd
7
+ data.tar.gz: a0adceaa7e05b0d6d27ee7f1c687940d9f8010e3996270710941a9cce90ad3345ce4dcbc7c4eb27ef0bc88d0cd80610a487b7ff75cf9737a5819143687c7141e
@@ -0,0 +1,4 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.1.4
4
+ - 2.2.0
@@ -1,68 +1,73 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- activeadmin-poro-decorator (0.1.0)
4
+ activeadmin-poro-decorator (0.2.0)
5
5
  rails (>= 4.0.0)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
- actionmailer (4.0.12)
11
- actionpack (= 4.0.12)
10
+ actionmailer (4.1.8)
11
+ actionpack (= 4.1.8)
12
+ actionview (= 4.1.8)
12
13
  mail (~> 2.5, >= 2.5.4)
13
- actionpack (4.0.12)
14
- activesupport (= 4.0.12)
15
- builder (~> 3.1.0)
16
- erubis (~> 2.7.0)
14
+ actionpack (4.1.8)
15
+ actionview (= 4.1.8)
16
+ activesupport (= 4.1.8)
17
17
  rack (~> 1.5.2)
18
18
  rack-test (~> 0.6.2)
19
- activemodel (4.0.12)
20
- activesupport (= 4.0.12)
21
- builder (~> 3.1.0)
22
- activerecord (4.0.12)
23
- activemodel (= 4.0.12)
24
- activerecord-deprecated_finders (~> 1.0.2)
25
- activesupport (= 4.0.12)
26
- arel (~> 4.0.0)
27
- activerecord-deprecated_finders (1.0.3)
28
- activesupport (4.0.12)
19
+ actionview (4.1.8)
20
+ activesupport (= 4.1.8)
21
+ builder (~> 3.1)
22
+ erubis (~> 2.7.0)
23
+ activemodel (4.1.8)
24
+ activesupport (= 4.1.8)
25
+ builder (~> 3.1)
26
+ activerecord (4.1.8)
27
+ activemodel (= 4.1.8)
28
+ activesupport (= 4.1.8)
29
+ arel (~> 5.0.0)
30
+ activesupport (4.1.8)
29
31
  i18n (~> 0.6, >= 0.6.9)
30
- minitest (~> 4.2)
31
- multi_json (~> 1.3)
32
+ json (~> 1.7, >= 1.7.7)
33
+ minitest (~> 5.1)
32
34
  thread_safe (~> 0.1)
33
- tzinfo (~> 0.3.37)
34
- arel (4.0.2)
35
- builder (3.1.4)
35
+ tzinfo (~> 1.1)
36
+ arel (5.0.1.20140414130214)
37
+ builder (3.2.2)
36
38
  coderay (1.1.0)
37
39
  database_cleaner (0.9.1)
38
40
  diff-lcs (1.2.5)
39
41
  erubis (2.7.0)
40
42
  hike (1.2.3)
41
43
  i18n (0.7.0)
44
+ json (1.8.2)
42
45
  mail (2.6.3)
43
46
  mime-types (>= 1.16, < 3)
44
47
  method_source (0.8.2)
45
48
  mime-types (2.4.3)
46
- minitest (4.7.5)
49
+ minitest (5.5.1)
47
50
  multi_json (1.10.1)
48
51
  pry (0.10.1)
49
52
  coderay (~> 1.1.0)
50
53
  method_source (~> 0.8.1)
51
54
  slop (~> 3.4)
52
55
  rack (1.5.2)
53
- rack-test (0.6.2)
56
+ rack-test (0.6.3)
54
57
  rack (>= 1.0)
55
- rails (4.0.12)
56
- actionmailer (= 4.0.12)
57
- actionpack (= 4.0.12)
58
- activerecord (= 4.0.12)
59
- activesupport (= 4.0.12)
58
+ rails (4.1.8)
59
+ actionmailer (= 4.1.8)
60
+ actionpack (= 4.1.8)
61
+ actionview (= 4.1.8)
62
+ activemodel (= 4.1.8)
63
+ activerecord (= 4.1.8)
64
+ activesupport (= 4.1.8)
60
65
  bundler (>= 1.3.0, < 2.0)
61
- railties (= 4.0.12)
66
+ railties (= 4.1.8)
62
67
  sprockets-rails (~> 2.0)
63
- railties (4.0.12)
64
- actionpack (= 4.0.12)
65
- activesupport (= 4.0.12)
68
+ railties (4.1.8)
69
+ actionpack (= 4.1.8)
70
+ activesupport (= 4.1.8)
66
71
  rake (>= 0.8.7)
67
72
  thor (>= 0.18.1, < 2.0)
68
73
  rake (10.3.2)
@@ -84,7 +89,7 @@ GEM
84
89
  multi_json (~> 1.0)
85
90
  rack (~> 1.0)
86
91
  tilt (~> 1.1, != 1.3.0)
87
- sprockets-rails (2.2.2)
92
+ sprockets-rails (2.2.4)
88
93
  actionpack (>= 3.0)
89
94
  activesupport (>= 3.0)
90
95
  sprockets (>= 2.8, < 4.0)
@@ -92,7 +97,8 @@ GEM
92
97
  thor (0.19.1)
93
98
  thread_safe (0.3.4)
94
99
  tilt (1.4.1)
95
- tzinfo (0.3.42)
100
+ tzinfo (1.2.2)
101
+ thread_safe (~> 0.1)
96
102
 
97
103
  PLATFORMS
98
104
  ruby
data/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # Activeadmin Poro Decorator
2
2
 
3
+ ![](https://travis-ci.org/kiote/activeadmin-poro-decorator.svg?branch=master)
4
+
3
5
  Alternative for draper, if you need decorators at ActiveAdmin (and Rails).
4
6
  Active Admin uses the Draper gem for [decorators](http://activeadmin.info/docs/11-decorators.html), but sometimes you don't need that.
5
7
  For reasons you could read this article: http://thepugautomatic.com/2014/03/draper.
@@ -51,12 +53,13 @@ end
51
53
  class PostDecorator < DelegateClass(Post)
52
54
  include ActiveadminPoroDecorator
53
55
 
54
- def self.model_name
55
- ActiveModel::Name.new Post
56
- end
56
+ class << self
57
+ delegate :all, :arel_table, :find_by_sql, :columns, :connection,\
58
+ :unscoped, :table_name, :primary_key, to: Post
57
59
 
58
- def self.columns
59
- Post.columns
60
+ def model_name
61
+ ActiveModel::Name.new Post
62
+ end
60
63
  end
61
64
 
62
65
  def hello
@@ -71,6 +74,11 @@ end
71
74
 
72
75
  For more examples have a look to [sample app](https://github.com/kiote/aa_plus_poro)
73
76
 
77
+ ## Credits
78
+ ![](http://d3a5orex94acl6.cloudfront.net/assets/logo-sprites-a6de3b3521c14ee436ca3207d83cdf90.png)
79
+
80
+ Activeadmin-poro-decorator is created with support of [Legelisten.no](http://www.legelisten.no/om-oss)
81
+
74
82
  ## Contributing
75
83
 
76
84
  1. Fork it ( https://github.com/[my-github-username]/activeadmin-poro-decorator/fork )
data/Rakefile CHANGED
@@ -1,3 +1,6 @@
1
1
  require "bundler/gem_tasks"
2
2
  import "./lib/tasks/copy_config.rake"
3
3
 
4
+ require 'rspec/core/rake_task'
5
+ RSpec::Core::RakeTask.new(:spec)
6
+ task :default => :spec
@@ -1,17 +1,7 @@
1
1
  require 'activeadmin-poro-decorator/version'
2
2
  require 'activeadmin-poro-decorator/config'
3
- require 'activeadmin-poro-decorator/railtie' if defined?(Rails)
4
-
5
- # monkey patch to make ActiveAdmin::Comment works with activeadmin_poro_decorator
6
- module ActiveAdmin
7
- class Comment < ActiveRecord::Base
8
- # @returns [String] The name of the record to use for the polymorphic relationship
9
- def self.resource_type(resource)
10
- return resource.type if resource.respond_to?(:type)
11
- ResourceController::Decorators.undecorate(resource).class.name.to_s
12
- end
13
- end
14
- end
3
+ require 'activeadmin-poro-decorator/railtie'
4
+ require 'activeadmin-poro-decorator/comment'
15
5
 
16
6
  module ActiveadminPoroDecorator
17
7
  extend ActiveSupport::Concern
@@ -24,14 +14,44 @@ module ActiveadminPoroDecorator
24
14
  delegate :url_helpers, to: "Rails.application.routes"
25
15
  end
26
16
 
17
+ def decorated?
18
+ true
19
+ end
20
+
21
+ def model
22
+ self.class.model_name_const
23
+ end
24
+
27
25
  module ClassMethods
26
+ def model_name_const
27
+ config = Config::Reader.new
28
+ self.to_s.gsub(config.param('modelname'), '').constantize
29
+ end
30
+
31
+ # obtain original model name
32
+ # ArticlePresenter -> Article
33
+ def model_name
34
+ ActiveModel::Name.new model_name_const.to_s.constantize
35
+ end
36
+
37
+ # we need to delegate all this methods to support active record interface
38
+ [:all, :arel_table, :find_by_sql, :columns, :connection,\
39
+ :unscoped, :table_name, :primary_key].each do |delegated_method|
40
+ define_method(delegated_method) do |*args|
41
+ model_name_const.send(delegated_method, *args)
42
+ end
43
+ end
44
+
45
+ def build_default_scope
46
+ model_name_const.send(:build_default_scope)
47
+ end
48
+
28
49
  def decorate(*args)
29
50
  collection_or_object = args[0]
30
51
  if collection_or_object.respond_to?(:to_ary)
31
52
  # assuming we have self.model_name method in decorator implementation
32
53
  # suggested by @eyefodder
33
- class_name = model_name.to_s.constantize
34
- DecoratedEnumerableProxy.new(collection_or_object, class_name)
54
+ DecoratedEnumerableProxy.new(collection_or_object, model_name_const)
35
55
  else
36
56
  new(collection_or_object)
37
57
  end
@@ -45,7 +65,8 @@ module ActiveadminPoroDecorator
45
65
  class DecoratedEnumerableProxy < DelegateClass(ActiveRecord::Relation)
46
66
  include Enumerable
47
67
 
48
- delegate :as_json, :collect, :map, :each, :[], :all?, :include?, :first, :last, :shift, :to => :decorated_collection
68
+ delegate :as_json, :collect, :map, :each, :[], :all?, :include?, \
69
+ :first, :last, :shift, to: :decorated_collection
49
70
 
50
71
  def initialize(collection, class_name)
51
72
  super(collection)
@@ -0,0 +1,15 @@
1
+ module ActiveAdmin
2
+ class Comment < ActiveRecord::Base
3
+ # @return [String] The name of the record to use for the polymorphic relationship
4
+ def self.resource_type(resource)
5
+ # original method has
6
+ # ResourceController::Decorators.undecorate(resource).class.base_class.name.to_s
7
+ # here, but somehow it didn't work
8
+ undecorated = ResourceController::Decorators.undecorate(resource)
9
+ if undecorated.to_s.include?(':')
10
+ undecorated = undecorated.class.to_s
11
+ end
12
+ undecorated.to_s
13
+ end
14
+ end
15
+ end
@@ -4,7 +4,11 @@ module ActiveadminPoroDecorator
4
4
  module Config
5
5
  class Reader
6
6
  def initialize
7
- @config = YAML.load_file('config/activeadmin-poro-decorator.yml')
7
+ @config = if ENV['RAILS_ENV'] == 'test'
8
+ YAML.load_file('spec/support/dummy/config/activeadmin-poro-decorator.yml')
9
+ else
10
+ YAML.load_file('config/activeadmin-poro-decorator.yml')
11
+ end
8
12
  end
9
13
 
10
14
  def param(name)
@@ -1,3 +1,3 @@
1
1
  module ActiveadminPoroDecorator
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'ArticlePresenter' do
4
+ it 'delegates :all to Article' do
5
+ expect(ArticlePresenter.all.class).to eq(Article::ActiveRecord_Relation)
6
+ end
7
+
8
+ it 'builds default scope' do
9
+ expect(ArticlePresenter.build_default_scope).to eq nil
10
+ end
11
+ end
@@ -2,19 +2,6 @@
2
2
  class ArticlePresenter < DelegateClass(Article)
3
3
  include ActiveadminPoroDecorator
4
4
 
5
- class << self
6
- delegate :all, :arel_table, :find_by_sql, :columns, :connection,\
7
- :unscoped, :table_name, :primary_key, to: Article
8
-
9
- def model_name
10
- ActiveModel::Name.new Article
11
- end
12
-
13
- def build_default_scope
14
- Article.send(:build_default_scope)
15
- end
16
- end
17
-
18
5
  def hello
19
6
  "Hello, #{title}"
20
7
  end
@@ -0,0 +1,2 @@
1
+ modelname: Presenter
2
+ use_helpers: true
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activeadmin-poro-decorator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Krivich Ekaterina
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-08 00:00:00.000000000 Z
11
+ date: 2015-02-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -117,6 +117,7 @@ extensions: []
117
117
  extra_rdoc_files: []
118
118
  files:
119
119
  - ".gitignore"
120
+ - ".travis.yml"
120
121
  - Gemfile
121
122
  - Gemfile.lock
122
123
  - LICENSE.txt
@@ -125,11 +126,12 @@ files:
125
126
  - activeadmin-poro-decorator.gemspec
126
127
  - activeadmin-poro-decorator.yml.example
127
128
  - lib/activeadmin-poro-decorator.rb
128
- - lib/activeadmin-poro-decorator/activeadmin_comment.rb
129
+ - lib/activeadmin-poro-decorator/comment.rb
129
130
  - lib/activeadmin-poro-decorator/config.rb
130
131
  - lib/activeadmin-poro-decorator/railtie.rb
131
132
  - lib/activeadmin-poro-decorator/version.rb
132
133
  - lib/tasks/copy_config.rake
134
+ - spec/integration/article_presenter_spec.rb
133
135
  - spec/integration/decorate_spec.rb
134
136
  - spec/spec_helper.rb
135
137
  - spec/support/dummy/Rakefile
@@ -139,6 +141,7 @@ files:
139
141
  - spec/support/dummy/bin/rails
140
142
  - spec/support/dummy/bin/rake
141
143
  - spec/support/dummy/config.ru
144
+ - spec/support/dummy/config/activeadmin-poro-decorator.yml
142
145
  - spec/support/dummy/config/application.rb
143
146
  - spec/support/dummy/config/boot.rb
144
147
  - spec/support/dummy/config/database.yml
@@ -171,6 +174,7 @@ signing_key:
171
174
  specification_version: 4
172
175
  summary: Plain Old Ruby Objects as Decorators for Active Admin
173
176
  test_files:
177
+ - spec/integration/article_presenter_spec.rb
174
178
  - spec/integration/decorate_spec.rb
175
179
  - spec/spec_helper.rb
176
180
  - spec/support/dummy/Rakefile
@@ -180,6 +184,7 @@ test_files:
180
184
  - spec/support/dummy/bin/rails
181
185
  - spec/support/dummy/bin/rake
182
186
  - spec/support/dummy/config.ru
187
+ - spec/support/dummy/config/activeadmin-poro-decorator.yml
183
188
  - spec/support/dummy/config/application.rb
184
189
  - spec/support/dummy/config/boot.rb
185
190
  - spec/support/dummy/config/database.yml
@@ -1,9 +0,0 @@
1
- module ActiveAdmin
2
- class Comment < ActiveRecord::Base
3
- # @returns [String] The name of the record to use for the polymorphic relationship
4
- def self.resource_type(resource)
5
- return resource.type if resource.respond_to?(:type)
6
- ResourceController::Decorators.undecorate(resource).class.name.to_s
7
- end
8
- end
9
- end