activeadmin-poro-decorator 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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