pacecar 1.5.3 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +2 -0
- data/.travis.yml +9 -1
- data/Appraisals +9 -17
- data/Gemfile +1 -1
- data/Gemfile.lock +93 -108
- data/MIT-LICENSE +1 -1
- data/README.md +10 -109
- data/Rakefile +9 -5
- data/TESTING.md +40 -0
- data/gemfiles/rails_4_mysql2_driver.gemfile +8 -0
- data/gemfiles/rails_4_pg_driver.gemfile +8 -0
- data/gemfiles/rails_4_sqlite3_driver.gemfile +8 -0
- data/lib/pacecar.rb +0 -10
- data/lib/pacecar/boolean.rb +8 -20
- data/lib/pacecar/helpers.rb +7 -16
- data/lib/pacecar/limit.rb +9 -9
- data/lib/pacecar/order.rb +9 -9
- data/lib/pacecar/polymorph.rb +5 -5
- data/lib/pacecar/presence.rb +8 -9
- data/lib/pacecar/search.rb +8 -32
- data/lib/pacecar/state.rb +13 -9
- data/lib/pacecar/version.rb +1 -1
- data/pacecar.gemspec +18 -16
- data/spec/boolean_spec.rb +6 -18
- data/spec/dummy/app/models/mammal.rb +1 -1
- data/spec/dummy/app/models/post.rb +2 -2
- data/spec/dummy/app/models/user.rb +1 -6
- data/spec/dummy/bin/bundle +3 -0
- data/spec/dummy/bin/rails +4 -0
- data/spec/dummy/bin/rake +4 -0
- data/spec/dummy/config/application.rb +4 -26
- data/spec/dummy/config/boot.rb +3 -9
- data/spec/dummy/config/database.yml +1 -7
- data/spec/dummy/config/environment.rb +2 -2
- data/spec/dummy/config/environments/development.rb +15 -12
- data/spec/dummy/config/environments/production.rb +57 -26
- data/spec/dummy/config/environments/test.rb +16 -15
- data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/spec/dummy/config/initializers/inflections.rb +9 -3
- data/spec/dummy/config/initializers/secret_token.rb +7 -2
- data/spec/dummy/config/initializers/session_store.rb +1 -6
- data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/spec/dummy/config/locales/en.yml +20 -2
- data/spec/dummy/config/routes.rb +22 -24
- data/spec/factories.rb +2 -2
- data/spec/helpers_spec.rb +18 -26
- data/spec/integration/navigation_spec.rb +4 -5
- data/spec/limit_spec.rb +11 -11
- data/spec/order_spec.rb +8 -8
- data/spec/pacecar_spec.rb +3 -3
- data/spec/polymorph_spec.rb +6 -6
- data/spec/presence_spec.rb +9 -9
- data/spec/search_spec.rb +14 -48
- data/spec/spec_helper.rb +11 -17
- data/spec/state_spec.rb +29 -29
- metadata +76 -70
- data/gemfiles/rails-3.0.11-database-mysql.gemfile +0 -8
- data/gemfiles/rails-3.0.11-database-mysql.gemfile.lock +0 -134
- data/gemfiles/rails-3.0.11-database-mysql2.gemfile +0 -8
- data/gemfiles/rails-3.0.11-database-mysql2.gemfile.lock +0 -134
- data/gemfiles/rails-3.0.11-database-pg.gemfile +0 -8
- data/gemfiles/rails-3.0.11-database-pg.gemfile.lock +0 -134
- data/gemfiles/rails-3.0.11-database-sqlite3-ruby.gemfile +0 -8
- data/gemfiles/rails-3.0.11-database-sqlite3-ruby.gemfile.lock +0 -136
- data/gemfiles/rails-3.0.11-database-sqlite3.gemfile +0 -8
- data/gemfiles/rails-3.0.11-database-sqlite3.gemfile.lock +0 -134
- data/gemfiles/rails-3.1.3-database-mysql.gemfile +0 -8
- data/gemfiles/rails-3.1.3-database-mysql.gemfile.lock +0 -144
- data/gemfiles/rails-3.1.3-database-mysql2.gemfile +0 -8
- data/gemfiles/rails-3.1.3-database-mysql2.gemfile.lock +0 -144
- data/gemfiles/rails-3.1.3-database-pg.gemfile +0 -8
- data/gemfiles/rails-3.1.3-database-pg.gemfile.lock +0 -144
- data/gemfiles/rails-3.1.3-database-sqlite3-ruby.gemfile +0 -8
- data/gemfiles/rails-3.1.3-database-sqlite3-ruby.gemfile.lock +0 -146
- data/gemfiles/rails-3.1.3-database-sqlite3.gemfile +0 -8
- data/gemfiles/rails-3.1.3-database-sqlite3.gemfile.lock +0 -144
- data/lib/pacecar/associations.rb +0 -39
- data/lib/pacecar/datetime.rb +0 -91
- data/lib/pacecar/duration.rb +0 -51
- data/lib/pacecar/numeric.rb +0 -29
- data/lib/pacecar/ranking.rb +0 -53
- data/spec/associations_spec.rb +0 -32
- data/spec/datetime_spec.rb +0 -92
- data/spec/duration_spec.rb +0 -22
- data/spec/numeric_spec.rb +0 -43
- data/spec/ranking_spec.rb +0 -63
@@ -1,5 +1,23 @@
|
|
1
|
-
#
|
2
|
-
#
|
1
|
+
# Files in the config/locales directory are used for internationalization
|
2
|
+
# and are automatically loaded by Rails. If you want to use locales other
|
3
|
+
# than English, add the necessary files in this directory.
|
4
|
+
#
|
5
|
+
# To use the locales, use `I18n.t`:
|
6
|
+
#
|
7
|
+
# I18n.t 'hello'
|
8
|
+
#
|
9
|
+
# In views, this is aliased to just `t`:
|
10
|
+
#
|
11
|
+
# <%= t('hello') %>
|
12
|
+
#
|
13
|
+
# To use a different locale, set it with `I18n.locale`:
|
14
|
+
#
|
15
|
+
# I18n.locale = :es
|
16
|
+
#
|
17
|
+
# This would use the information in config/locales/es.yml.
|
18
|
+
#
|
19
|
+
# To learn more, please read the Rails Internationalization guide
|
20
|
+
# available at http://guides.rubyonrails.org/i18n.html.
|
3
21
|
|
4
22
|
en:
|
5
23
|
hello: "Hello world"
|
data/spec/dummy/config/routes.rb
CHANGED
@@ -1,19 +1,20 @@
|
|
1
1
|
Dummy::Application.routes.draw do
|
2
|
-
# The priority is based upon order of creation:
|
3
|
-
#
|
2
|
+
# The priority is based upon order of creation: first created -> highest priority.
|
3
|
+
# See how all your routes lay out with "rake routes".
|
4
4
|
|
5
|
-
#
|
6
|
-
#
|
7
|
-
|
5
|
+
# You can have the root of your site routed with "root"
|
6
|
+
# root 'welcome#index'
|
7
|
+
|
8
|
+
# Example of regular route:
|
9
|
+
# get 'products/:id' => 'catalog#view'
|
8
10
|
|
9
|
-
#
|
10
|
-
#
|
11
|
-
# This route can be invoked with purchase_url(:id => product.id)
|
11
|
+
# Example of named route that can be invoked with purchase_url(id: product.id)
|
12
|
+
# get 'products/:id/purchase' => 'catalog#purchase', as: :purchase
|
12
13
|
|
13
|
-
#
|
14
|
+
# Example resource route (maps HTTP verbs to controller actions automatically):
|
14
15
|
# resources :products
|
15
16
|
|
16
|
-
#
|
17
|
+
# Example resource route with options:
|
17
18
|
# resources :products do
|
18
19
|
# member do
|
19
20
|
# get 'short'
|
@@ -25,34 +26,31 @@ Dummy::Application.routes.draw do
|
|
25
26
|
# end
|
26
27
|
# end
|
27
28
|
|
28
|
-
#
|
29
|
+
# Example resource route with sub-resources:
|
29
30
|
# resources :products do
|
30
31
|
# resources :comments, :sales
|
31
32
|
# resource :seller
|
32
33
|
# end
|
33
34
|
|
34
|
-
#
|
35
|
+
# Example resource route with more complex sub-resources:
|
35
36
|
# resources :products do
|
36
37
|
# resources :comments
|
37
38
|
# resources :sales do
|
38
|
-
# get 'recent', :
|
39
|
+
# get 'recent', on: :collection
|
39
40
|
# end
|
40
41
|
# end
|
42
|
+
|
43
|
+
# Example resource route with concerns:
|
44
|
+
# concern :toggleable do
|
45
|
+
# post 'toggle'
|
46
|
+
# end
|
47
|
+
# resources :posts, concerns: :toggleable
|
48
|
+
# resources :photos, concerns: :toggleable
|
41
49
|
|
42
|
-
#
|
50
|
+
# Example resource route within a namespace:
|
43
51
|
# namespace :admin do
|
44
52
|
# # Directs /admin/products/* to Admin::ProductsController
|
45
53
|
# # (app/controllers/admin/products_controller.rb)
|
46
54
|
# resources :products
|
47
55
|
# end
|
48
|
-
|
49
|
-
# You can have the root of your site routed with "root"
|
50
|
-
# just remember to delete public/index.html.
|
51
|
-
# root :to => "welcome#index"
|
52
|
-
|
53
|
-
# See how all your routes lay out with "rake routes"
|
54
|
-
|
55
|
-
# This is a legacy wild controller route that's not recommended for RESTful applications.
|
56
|
-
# Note: This route will make all actions in every controller accessible via GET requests.
|
57
|
-
# match ':controller(/:action(/:id(.:format)))'
|
58
56
|
end
|
data/spec/factories.rb
CHANGED
data/spec/helpers_spec.rb
CHANGED
@@ -2,47 +2,39 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe 'Helpers' do
|
4
4
|
|
5
|
-
describe
|
6
|
-
it
|
7
|
-
Article.send(:safe_columns).
|
5
|
+
describe 'A class without a db table' do
|
6
|
+
it 'Returns an empty array when asked about #safe_columns' do
|
7
|
+
expect(Article.send(:safe_columns)).to eq []
|
8
8
|
end
|
9
9
|
|
10
|
-
it
|
11
|
-
|
10
|
+
it 'Survives an include of Pacecar' do
|
11
|
+
expect { Article.send :include, Pacecar }.to_not raise_error
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
15
|
-
describe
|
16
|
-
it
|
17
|
-
Comment.safe_column_names.
|
15
|
+
describe 'A class with a db table' do
|
16
|
+
it 'Returns columns for #safe_column_names' do
|
17
|
+
expect(Comment.safe_column_names).to eq ['id', 'user_id', 'description', 'rating', 'created_at', 'updated_at']
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
|
-
describe
|
22
|
-
it
|
23
|
-
User.boolean_column_names.
|
21
|
+
describe 'A class with many column types' do
|
22
|
+
it 'Returns boolean columns for #boolean_column_names' do
|
23
|
+
expect(User.boolean_column_names).to eq ['admin']
|
24
24
|
end
|
25
25
|
|
26
|
-
it
|
27
|
-
User.non_boolean_column_names.
|
26
|
+
it 'Returns non boolean columns for #non_boolean_column_names' do
|
27
|
+
expect(User.non_boolean_column_names).to eq ['id', 'approved_at', 'rejected_at', 'last_posted_on', 'first_name', 'last_name', 'description', 'age', 'rating', 'balance', 'created_at', 'updated_at']
|
28
28
|
end
|
29
29
|
|
30
|
-
it
|
31
|
-
User.
|
32
|
-
end
|
33
|
-
|
34
|
-
it "should return text and string columns for #text_and_string_column_names" do
|
35
|
-
User.text_and_string_column_names.should == ['first_name', 'last_name', 'description']
|
36
|
-
end
|
37
|
-
|
38
|
-
it "should return numeric columns for #numeric_column_names" do
|
39
|
-
User.numeric_column_names.should == ['id', 'age', 'rating', 'balance']
|
30
|
+
it 'Returns text and string columns for #text_and_string_column_names' do
|
31
|
+
expect(User.text_and_string_column_names).to eq ['first_name', 'last_name', 'description']
|
40
32
|
end
|
41
33
|
end
|
42
34
|
|
43
|
-
describe
|
44
|
-
it
|
45
|
-
Post.non_state_text_and_string_columns.
|
35
|
+
describe 'A class with a state column should' do
|
36
|
+
it 'Returns all non state text and string columns for #non_state_text_and_string_column_names' do
|
37
|
+
expect(Post.non_state_text_and_string_columns).to eq ['title', 'body']
|
46
38
|
end
|
47
39
|
end
|
48
40
|
|
@@ -1,9 +1,8 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
::Rails.application.should be_a(Dummy::Application)
|
3
|
+
describe 'Navigation' do
|
4
|
+
|
5
|
+
it 'should be a valid app' do
|
6
|
+
expect(::Rails.application).to be_a(Dummy::Application)
|
8
7
|
end
|
9
8
|
end
|
data/spec/limit_spec.rb
CHANGED
@@ -3,23 +3,23 @@ require 'spec_helper'
|
|
3
3
|
describe 'Limit' do
|
4
4
|
|
5
5
|
before do
|
6
|
-
|
6
|
+
create_list(:user, 15)
|
7
7
|
end
|
8
8
|
|
9
|
-
it
|
10
|
-
User.count.
|
11
|
-
User.limited.
|
9
|
+
it 'Limits the results to the default value' do
|
10
|
+
expect(User.count).to eq 15
|
11
|
+
expect(User.limited.size).to eq 10
|
12
12
|
end
|
13
13
|
|
14
|
-
it
|
15
|
-
User.count.
|
16
|
-
User.limited(
|
14
|
+
it 'Limits the results to the supplied value when sent args' do
|
15
|
+
expect(User.count).to eq 15
|
16
|
+
expect(User.limited(5).size).to eq 5
|
17
17
|
end
|
18
18
|
|
19
|
-
it
|
20
|
-
User.expects(:per_page).returns
|
21
|
-
User.count.
|
22
|
-
User.limited.
|
19
|
+
it 'Limits the results to the per_page value of the class' do
|
20
|
+
User.expects(:per_page).returns 2
|
21
|
+
expect(User.count).to eq 15
|
22
|
+
expect(User.limited.size).to eq 2
|
23
23
|
end
|
24
24
|
|
25
25
|
end
|
data/spec/order_spec.rb
CHANGED
@@ -3,20 +3,20 @@ require 'spec_helper'
|
|
3
3
|
describe 'Order' do
|
4
4
|
|
5
5
|
before do
|
6
|
-
@first =
|
7
|
-
@last =
|
6
|
+
@first = create :user, first_name: 'Abe'
|
7
|
+
@last = create :user, first_name: 'Zed'
|
8
8
|
end
|
9
9
|
|
10
|
-
it
|
11
|
-
User.by_first_name.
|
10
|
+
it 'Returns the correct results for a by_ column method with no args' do
|
11
|
+
expect(User.by_first_name).to eq [@first, @last]
|
12
12
|
end
|
13
13
|
|
14
|
-
it
|
15
|
-
User.by_first_name(:asc).
|
14
|
+
it 'Returns the correct results for a by_ column method with asc args' do
|
15
|
+
expect(User.by_first_name(:asc)).to eq [@first, @last]
|
16
16
|
end
|
17
17
|
|
18
|
-
it
|
19
|
-
User.by_first_name(:desc).
|
18
|
+
it 'Returns the correct results for a by_ column method with desc args' do
|
19
|
+
expect(User.by_first_name(:desc)).to eq [@last, @first]
|
20
20
|
end
|
21
21
|
|
22
22
|
end
|
data/spec/pacecar_spec.rb
CHANGED
data/spec/polymorph_spec.rb
CHANGED
@@ -3,16 +3,16 @@ require 'spec_helper'
|
|
3
3
|
describe 'Polymorph' do
|
4
4
|
|
5
5
|
before do
|
6
|
-
@owned_by_user =
|
7
|
-
@owned_by_mammal =
|
6
|
+
@owned_by_user = create :post, owner_type: 'User'
|
7
|
+
@owned_by_mammal = create :post, owner_type: 'Mammal'
|
8
8
|
end
|
9
9
|
|
10
|
-
it
|
11
|
-
Post.for_owner_type(User).
|
10
|
+
it 'Returns records on a _for column method with Class' do
|
11
|
+
expect(Post.for_owner_type(User)).to eq [@owned_by_user]
|
12
12
|
end
|
13
13
|
|
14
|
-
it
|
15
|
-
Post.for_owner_type('User').
|
14
|
+
it 'Returns records on a _for column method with String' do
|
15
|
+
expect(Post.for_owner_type('User')).to eq [@owned_by_user]
|
16
16
|
end
|
17
17
|
|
18
18
|
end
|
data/spec/presence_spec.rb
CHANGED
@@ -3,21 +3,21 @@ require 'spec_helper'
|
|
3
3
|
describe 'Presence' do
|
4
4
|
|
5
5
|
before do
|
6
|
-
@not_null =
|
7
|
-
@null =
|
6
|
+
@not_null = create :user, first_name: 'Fake'
|
7
|
+
@null = create :user, first_name: nil
|
8
8
|
end
|
9
9
|
|
10
|
-
it
|
11
|
-
User.first_name_present.
|
10
|
+
it 'Returns records for a _present column method' do
|
11
|
+
expect(User.first_name_present).to eq [@not_null]
|
12
12
|
end
|
13
13
|
|
14
|
-
it
|
15
|
-
User.first_name_missing.
|
14
|
+
it 'Returns records for a _missing column method' do
|
15
|
+
expect(User.first_name_missing).to eq [@null]
|
16
16
|
end
|
17
17
|
|
18
|
-
it
|
19
|
-
|
20
|
-
|
18
|
+
it 'Does not setup methods for boolean columns' do
|
19
|
+
expect { User.admin_missing }.to raise_error(NoMethodError)
|
20
|
+
expect { User.admin_present }.to raise_error(NoMethodError)
|
21
21
|
end
|
22
22
|
|
23
23
|
end
|
data/spec/search_spec.rb
CHANGED
@@ -3,61 +3,27 @@ require 'spec_helper'
|
|
3
3
|
describe 'Search' do
|
4
4
|
|
5
5
|
before do
|
6
|
-
@abe
|
7
|
-
@bob
|
8
|
-
@cindy
|
9
|
-
@dave
|
10
|
-
@ed
|
11
|
-
@frank
|
12
|
-
@george
|
6
|
+
@abe = create :user, first_name: 'Abe', last_name: 'Anderson', description: 'Apple'
|
7
|
+
@bob = create :user, first_name: 'Bob', last_name: 'Babson', description: 'Banana'
|
8
|
+
@cindy = create :user, first_name: 'Cindy', last_name: 'Clarkson', description: 'Cookie'
|
9
|
+
@dave = create :user, first_name: 'Dave'
|
10
|
+
@ed = create :user, last_name: 'Dave'
|
11
|
+
@frank = create :user, description: 'Dave'
|
12
|
+
@george = create :user, first_name: 'Dave', last_name: 'Dave', description: 'Dave'
|
13
13
|
|
14
|
-
@null
|
14
|
+
@null = create :user, first_name: nil, last_name: nil, description: nil
|
15
15
|
end
|
16
16
|
|
17
|
-
it
|
18
|
-
User.first_name_equals('Abe').
|
17
|
+
it 'Returns records which match the supplied term' do
|
18
|
+
expect(User.first_name_equals('Abe')).to eq [@abe]
|
19
19
|
end
|
20
20
|
|
21
|
-
it
|
22
|
-
User.first_name_equals(['Abe', 'Bob']).
|
21
|
+
it 'Returns records which match any of the supplied terms' do
|
22
|
+
expect(User.first_name_equals(['Abe', 'Bob'])).to eq [@abe, @bob]
|
23
23
|
end
|
24
24
|
|
25
|
-
it
|
26
|
-
User.first_name_equals(nil).
|
27
|
-
end
|
28
|
-
|
29
|
-
it "should set the correct expected values for a _matches column method" do
|
30
|
-
User.first_name_matches('ind').should == [@cindy]
|
31
|
-
User.first_name_matches('IND').should == [@cindy]
|
32
|
-
end
|
33
|
-
|
34
|
-
it "should set the correct expected values for a _starts_with column method" do
|
35
|
-
User.first_name_starts_with('Ab').should == [@abe]
|
36
|
-
User.first_name_starts_with('aB').should == [@abe]
|
37
|
-
end
|
38
|
-
|
39
|
-
it "should set the correct expected values for a _ends_with column method" do
|
40
|
-
User.first_name_ends_with('ob').should == [@bob]
|
41
|
-
User.first_name_ends_with('Ob').should == [@bob]
|
42
|
-
end
|
43
|
-
|
44
|
-
it "should set the correct expected values for a search_for method" do
|
45
|
-
User.search_for('Dave').should == [@dave, @ed, @frank, @george]
|
46
|
-
User.search_for('dave').should == [@dave, @ed, @frank, @george]
|
47
|
-
end
|
48
|
-
|
49
|
-
it "should set the correct expected values for a search_for method with :on option" do
|
50
|
-
User.search_for('Dave', :on => [:first_name, :description]).should == [@dave, @frank, @george]
|
51
|
-
User.search_for('dave', :on => [:first_name, :description]).should == [@dave, @frank, @george]
|
52
|
-
end
|
53
|
-
|
54
|
-
it "should set the correct expected values for a search_for method with an :require option" do
|
55
|
-
User.search_for('Dave', :require => :all).should == [@george]
|
56
|
-
User.search_for('dave', :require => :all).should == [@george]
|
57
|
-
end
|
58
|
-
|
59
|
-
it "should set the correct expected values for a search_for method on a class with no columns" do
|
60
|
-
Mammal.search_for('test').should == []
|
25
|
+
it 'Returns records which match the supplied term when the term is nil' do
|
26
|
+
expect(User.first_name_equals(nil)).to eq [@ed, @frank, @null]
|
61
27
|
end
|
62
28
|
|
63
29
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,27 +1,22 @@
|
|
1
1
|
# Configure Rails Envinronment
|
2
|
-
ENV[
|
2
|
+
ENV['RAILS_ENV'] = 'test'
|
3
3
|
|
4
|
-
require File.expand_path(
|
5
|
-
require
|
6
|
-
require
|
4
|
+
require File.expand_path('../dummy/config/environment.rb', __FILE__)
|
5
|
+
require 'rails/test_help'
|
6
|
+
require 'rspec/rails'
|
7
7
|
|
8
8
|
ActionMailer::Base.delivery_method = :test
|
9
9
|
ActionMailer::Base.perform_deliveries = true
|
10
|
-
ActionMailer::Base.default_url_options[:host] =
|
10
|
+
ActionMailer::Base.default_url_options[:host] = 'test.com'
|
11
11
|
|
12
12
|
Rails.backtrace_cleaner.remove_silencers!
|
13
13
|
|
14
|
-
# Configure capybara for integration testing
|
15
|
-
require "capybara/rails"
|
16
|
-
Capybara.default_driver = :rack_test
|
17
|
-
Capybara.default_selector = :css
|
18
|
-
|
19
|
-
# Run any available migration
|
20
|
-
ActiveRecord::Migrator.migrate File.expand_path("../dummy/db/migrate/", __FILE__)
|
21
|
-
|
22
14
|
# Load support files
|
23
15
|
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
|
24
16
|
|
17
|
+
require 'factory_girl'
|
18
|
+
require 'factories'
|
19
|
+
|
25
20
|
RSpec.configure do |config|
|
26
21
|
# Remove this line if you don't want RSpec's should and should_not
|
27
22
|
# methods or matchers
|
@@ -29,10 +24,9 @@ RSpec.configure do |config|
|
|
29
24
|
config.include RSpec::Matchers
|
30
25
|
|
31
26
|
# == Mock Framework
|
32
|
-
config.
|
27
|
+
config.mock_framework = :mocha
|
33
28
|
|
34
29
|
config.use_transactional_fixtures = true
|
35
|
-
end
|
36
30
|
|
37
|
-
|
38
|
-
|
31
|
+
config.include FactoryGirl::Syntax::Methods
|
32
|
+
end
|