ransack_wrap 0.1.1 → 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: 775b918c83228b02da9315bcf1bdb96f8f13442f
4
- data.tar.gz: 064b46c381384e7979c373fee9c4b947e6cd4dfe
3
+ metadata.gz: 6ab10eb36103ea6b478e5efd62eb71a3bfe843b9
4
+ data.tar.gz: ce920eddfcc840d8536be5728cc2e6fde3daafdf
5
5
  SHA512:
6
- metadata.gz: 309bc82ca7b0a1001a08f13e819046f9de42e6b59b97edfc364a56c4073ea3e7c7a5f2e2b014924e66d139289cf6071ee08c4b07f40724f745d32a421a0c086e
7
- data.tar.gz: 0ca448f3086307ea4963ec19a348c7840daf86a647764919d7062baded10a7e03780bfe1346221c3edbf7685ea35393ba925ceef679cff3f61e7ef8e6b7dd81e
6
+ metadata.gz: 48130aa446959608d86ae24f701d3a19b7baf7099d8b379f94aafaee5f118f191aaad51cf6bef92072870c63b93b5960d55ba7e4e87410790831954ca67352b1
7
+ data.tar.gz: 657e5be0694ce9e0bf8360e4499837e326089390deeb23865f7496713245a4afd8107bb7c90c734225e1c639b1d403213c570e1eca83a9d52d5cc946bc1a9690
data/.gitignore CHANGED
@@ -3,6 +3,7 @@
3
3
  .bundle
4
4
  .config
5
5
  .yardoc
6
+ .tm_properties
6
7
  Gemfile.lock
7
8
  InstalledFiles
8
9
  _yardoc
data/Rakefile CHANGED
@@ -1 +1,19 @@
1
+ # :enddoc:
2
+
1
3
  require "bundler/gem_tasks"
4
+ require 'rspec/core/rake_task'
5
+
6
+ RSpec::Core::RakeTask.new(:spec) do |rspec|
7
+ rspec.rspec_opts = ['--backtrace']
8
+ end
9
+
10
+ task :default => :spec
11
+
12
+ desc "Open an irb session with Ransack and the sample data used in specs"
13
+ task :console do
14
+ require 'irb'
15
+ require 'irb/completion'
16
+ require 'console'
17
+ ARGV.clear
18
+ IRB.start
19
+ end
@@ -1,3 +1,5 @@
1
+ # :nodoc: all
2
+
1
3
  module Rails
2
4
  module Generators
3
5
  class SearcherGenerator < NamedBase
@@ -22,7 +22,7 @@ class <%= class_name %>Searcher < RansackWrap::Search
22
22
  # end
23
23
  end
24
24
 
25
- # Delegation to searchers
25
+ # Delegation to searchers (uncomment and fill with your keys from class above)
26
26
  # delegate :only_sale, :opt_in, :cat_in, to: :base
27
27
  end
28
28
  <% end -%>
data/lib/ransack_wrap.rb CHANGED
@@ -1,12 +1,18 @@
1
1
  require "ransack_wrap/version"
2
+
3
+ require "active_support/core_ext"
4
+ require "active_attr"
5
+ require "ransack"
6
+
2
7
  require "ransack_wrap/search"
3
8
  require "ransack_wrap/scopes"
4
- require 'ransack_wrap/adapters/active_record'
5
- require 'ransack_wrap/helpers'
6
- require 'ransack_wrap/railtie' if defined?(Rails)
9
+ require "ransack_wrap/adapters/active_record"
10
+ require "ransack_wrap/helpers"
11
+ require "ransack_wrap/railtie" if defined?(Rails)
7
12
 
8
13
  module RansackWrap
9
14
  # Your code goes here...
10
15
  end
11
16
 
17
+ # :stopdoc:
12
18
  ActionController::Base.helper RansackWrap::Helpers::FormHelper
@@ -1,26 +1,46 @@
1
- require 'active_record'
1
+ require "active_record"
2
2
 
3
3
  module RansackWrap
4
+ # :stopdoc:
4
5
  module Adapters
5
6
  module ActiveRecord
6
7
  module Base
7
- def wrap_searcher_as(name, params = {})
8
- send(:searcher_class_for, name).new(self, params)
9
- end
8
+ # :startdoc:
10
9
 
10
+ ##
11
+ # Creates new searcher using RansackWrap::Search subclass for current model.
12
+ #
13
+ # In the example below it creates instance of +UserSearcher+ class (which must be defined in +app/searchers/user_searcher.rb)+
14
+ #
15
+ # User.wrap_searcher(params[:q])
16
+ # # => UserSearcher.new
11
17
  def wrap_searcher(params = {})
12
- send :wrap_searcher_as, nil, params
18
+ send(:wrap_searcher_as, name, params)
19
+ end
20
+
21
+ ##
22
+ # Creates new searcher using custom named searcher class.
23
+ #
24
+ # In the example below it creates instance of +SharedSearcher+ class (which must be defined in +app/searchers/shared_searcher.rb)+
25
+ #
26
+ # User.wrap_searcher(:shared, params[:q])
27
+ # # => SharedSearcher.new
28
+ #
29
+ # :call-seq:
30
+ # wrap_searcher_as(:name, params = {})
31
+ # wrap_searcher_as("name", params = {})
32
+ def wrap_searcher_as(name, params = {})
33
+ send(:searcher_class_for, name).new(self, params)
13
34
  end
14
35
 
15
- private
36
+ private
16
37
  def searcher_class_for(name)
17
- name = name.to_s.camelize unless name.nil?
18
- name ||= self.scoped.klass.name
19
- name.concat("Searcher").constantize
38
+ name.to_s.camelize.concat("Searcher").constantize
20
39
  end
21
40
  end
22
41
  end
23
42
  end
24
43
  end
25
44
 
26
- ActiveRecord::Base.extend RansackWrap::Adapters::ActiveRecord::Base
45
+ # :stopdoc:
46
+ ActiveRecord::Base.extend(RansackWrap::Adapters::ActiveRecord::Base)
@@ -1,6 +1,13 @@
1
+ # :stopdoc:
2
+
1
3
  module RansackWrap
2
4
  module Helpers
3
5
  module FormHelper
6
+ # :startdoc:
7
+
8
+ ##
9
+ # Extends original +search_form_for+ method from Ransack gem
10
+ # to also support RansackWrap::Search instances.
4
11
  def search_form_for(record, options = {}, &proc)
5
12
  if record.is_a?(Ransack::Search) || record.is_a?(RansackWrap::Search)
6
13
  search = record
@@ -1,19 +1,20 @@
1
1
  require 'rails/railtie'
2
2
 
3
- module ActiveModel
3
+ # :nodoc: all
4
+ module RansackWrap
4
5
  class Railtie < Rails::Railtie
5
- generators do |app|
6
- app ||= Rails.application # Rails 3.0.x does not yield `app`
7
-
8
- Rails::Generators.configure! app.config.generators
6
+ config.after_initialize do |app|
7
+ app.config.paths.add 'app/searchers', eager_load: true
9
8
  end
10
9
  end
11
10
  end
12
11
 
13
- module RansackWrap
12
+ module ActiveModel
14
13
  class Railtie < Rails::Railtie
15
- config.after_initialize do |app|
16
- app.config.paths.add 'app/searchers', eager_load: true
14
+ generators do |app|
15
+ app ||= Rails.application # Rails 3.0.x does not yield `app`
16
+
17
+ Rails::Generators.configure! app.config.generators
17
18
  end
18
19
  end
19
20
  end
@@ -2,16 +2,22 @@ module RansackWrap
2
2
  class Search
3
3
  include Ransack::Naming
4
4
 
5
+ class_attribute :ransack_aliases, instance_writer: false
6
+ self.ransack_aliases = {}.with_indifferent_access
7
+
5
8
  attr_reader :base
6
9
 
7
10
  def initialize(object, params = {})
8
11
  @base = scope_class.new(object)
9
12
 
10
- params ||= {}
11
- ransack_params = params.slice! *base.attributes.keys.map(&:to_sym)
12
- ransack_params ||= {}
13
+ params = {} unless params.is_a? Hash
14
+ ransack_params = params.slice! *scope_keys+ransack_aliases.keys.map(&:to_sym)
15
+
16
+ params.slice!(*scope_keys).each do |key, val|
17
+ ransack_params[ransack_aliases[key].to_sym] = val
18
+ end
13
19
 
14
- build params.with_indifferent_access
20
+ build params.with_indifferent_access
15
21
  ransack.build ransack_params.with_indifferent_access
16
22
  end
17
23
 
@@ -41,6 +47,8 @@ module RansackWrap
41
47
  base.send method, *args
42
48
  elsif ransack.respond_to? name
43
49
  ransack.send method, *args
50
+ elsif ransack_alias_method?(name)
51
+ ransack.send ransack_aliases[name], *args
44
52
  else
45
53
  super
46
54
  end
@@ -50,11 +58,26 @@ module RansackWrap
50
58
  super or begin
51
59
  name = method.to_s
52
60
  writer = name.sub!(/\=$/, '')
53
- base.attribute_method?(name) || ransack.respond_to?(name) || false
61
+ base.attribute_method?(name) || ransack.respond_to?(name) || ransack_alias_method?(name) || false
54
62
  end
55
63
  end
56
64
 
65
+ def self.alias_to_ransack(new_name, old_name, writer: true)
66
+ new_hash = {}
67
+ new_hash[new_name.to_s] = old_name.to_s
68
+ new_hash["#{new_name}=".to_s] = "#{old_name}=" if writer
69
+ ransack_aliases.merge! new_hash
70
+ end
71
+
57
72
  private
73
+ def ransack_alias_method?(name)
74
+ ransack_aliases.key?(name) && ransack.respond_to?(ransack_aliases[name])
75
+ end
76
+
77
+ def scope_keys
78
+ @scope_keys ||= base.attributes.keys.map(&:to_sym)
79
+ end
80
+
58
81
  def scope_class
59
82
  raise NameError unless self.class.const_defined?(:Scopes)
60
83
  self.class.const_get(:Scopes)
@@ -1,3 +1,3 @@
1
1
  module RansackWrap
2
- VERSION = "0.1.1"
2
+ VERSION = "0.2.0"
3
3
  end
data/ransack_wrap.gemspec CHANGED
@@ -1,4 +1,5 @@
1
1
  # encoding: utf-8
2
+ # :enddoc:
2
3
 
3
4
  lib = File.expand_path('../lib', __FILE__)
4
5
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
@@ -19,13 +20,20 @@ Gem::Specification.new do |spec|
19
20
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
20
21
  spec.require_paths = ["lib"]
21
22
 
22
- spec.add_dependency 'ransack', '>= 1.0.0'
23
+ spec.add_dependency 'ransack', '>= 0.7.3', '< 1.2'
23
24
  spec.add_dependency 'active_attr', '>= 0.8.2'
24
25
  spec.add_dependency 'activerecord', '>= 3.0.2', "< 4.0"
25
26
  spec.add_dependency 'actionpack', '>= 3.0.2', "< 4.0"
26
- spec.add_runtime_dependency "activemodel", ">= 3.0.2", "< 4.0"
27
- spec.add_runtime_dependency "activesupport", ">= 3.0.2", "< 4.0"
27
+ spec.add_dependency 'activesupport', '>= 3.0.2', "< 4.0"
28
28
  spec.add_dependency 'polyamorous', '>= 0.5.0'
29
+
30
+ spec.add_runtime_dependency "activemodel", ">= 3.0.2", "< 4.0"
31
+
29
32
  spec.add_development_dependency "bundler", "~> 1.3"
30
33
  spec.add_development_dependency "rake"
34
+ spec.add_development_dependency 'rspec', '~> 2.8.0'
35
+ spec.add_development_dependency 'machinist', '~> 1.0.6'
36
+ spec.add_development_dependency 'faker', '~> 0.9.5'
37
+ spec.add_development_dependency 'sqlite3', '~> 1.3.3'
38
+ spec.add_development_dependency 'pry'
31
39
  end
@@ -0,0 +1,5 @@
1
+ Article.blueprint do
2
+ person
3
+ title
4
+ body
5
+ end
@@ -0,0 +1,5 @@
1
+ Comment.blueprint do
2
+ article
3
+ person
4
+ body
5
+ end
@@ -0,0 +1,5 @@
1
+ Note.blueprint do
2
+ note
3
+ notable_type { "Article" }
4
+ notable_id
5
+ end
@@ -0,0 +1,8 @@
1
+ Person.blueprint do
2
+ name
3
+ email { "test@example.com" }
4
+ salary
5
+ only_sort
6
+ only_search
7
+ only_admin
8
+ end
@@ -0,0 +1,3 @@
1
+ Tag.blueprint do
2
+ name { Sham.tag_name }
3
+ end
data/spec/console.rb ADDED
@@ -0,0 +1,23 @@
1
+ # :enddoc:
2
+
3
+ Bundler.setup
4
+ require 'machinist/active_record'
5
+ require 'sham'
6
+ require 'faker'
7
+ require 'ransack_wrap'
8
+
9
+ Dir[File.expand_path('../../spec/{helpers,support,blueprints}/*.rb', __FILE__)]
10
+ .each do |f|
11
+ require f
12
+ end
13
+
14
+ Sham.define do
15
+ name { Faker::Name.name }
16
+ title { Faker::Lorem.sentence }
17
+ body { Faker::Lorem.paragraph }
18
+ salary { |index| 30000 + (index * 1000) }
19
+ tag_name { Faker::Lorem.words(3).join(' ') }
20
+ note { Faker::Lorem.words(7).join(' ') }
21
+ end
22
+
23
+ Schema.create
@@ -0,0 +1,13 @@
1
+ # :nodoc: all
2
+
3
+ class PersonSearcher < RansackWrap::Search
4
+ class Scopes < RansackWrap::Scopes
5
+ attribute :only_with_large_salary, type: ActiveAttr::Typecasting::Boolean
6
+
7
+ def scope_only_with_large_salary(value)
8
+ scoped.with_large_salary
9
+ end
10
+ end
11
+
12
+ alias_to_ransack :in_family_with, :children_name_or_parent_name_cont
13
+ end
@@ -0,0 +1,11 @@
1
+ # :enddoc:
2
+
3
+ module RansackWrapHelper
4
+ def quote_table_name(table)
5
+ ActiveRecord::Base.connection.quote_table_name(table)
6
+ end
7
+
8
+ def quote_column_name(column)
9
+ ActiveRecord::Base.connection.quote_column_name(column)
10
+ end
11
+ end
@@ -0,0 +1,6 @@
1
+ describe 'RansackWrap' do
2
+ it 'can be required without errors' do
3
+ output = `bundle exec ruby -e "require 'ransack_wrap'" 2>&1`
4
+ output.should be_empty
5
+ end
6
+ end
@@ -0,0 +1,69 @@
1
+ require 'spec_helper'
2
+
3
+ module RansackWrap
4
+ describe Search do
5
+
6
+ describe '#initialize' do
7
+ it 'does not raise exception for string :params argument' do
8
+ -> {
9
+ Person.wrap_searcher('')
10
+ }.should_not raise_error
11
+ end
12
+ end
13
+
14
+ describe '#build' do
15
+ it 'accept ransack attributes' do
16
+ search = Person.wrap_searcher(name_eq: 'Ernie')
17
+ condition = search.ransack.base[:name_eq]
18
+ condition.should be_a Ransack::Nodes::Condition
19
+ condition.predicate.name.should eq 'eq'
20
+ condition.attributes.first.name.should eq 'name'
21
+ condition.value.should eq 'Ernie'
22
+ end
23
+ end
24
+
25
+ describe '#result' do
26
+ let(:people_table) { "#{quote_table_name("people")}" }
27
+ let(:people_name_field) { "#{quote_table_name("people")}.#{quote_column_name("name")}" }
28
+ let(:people_salary_field) { "#{quote_table_name("people")}.#{quote_column_name("salary")}" }
29
+ let(:parents_people_name_field) { "#{quote_table_name("parents_people")}.#{quote_column_name("name")}" }
30
+ let(:children_people_name_field) { "#{quote_table_name("children_people")}.#{quote_column_name("name")}" }
31
+
32
+ it 'evalutes Ransack attributes' do
33
+ search = Person.wrap_searcher(children_name_eq: 'Ernie')
34
+ search.result.should be_an ActiveRecord::Relation
35
+ search.result.to_sql.should match /#{children_people_name_field} = 'Ernie'/
36
+ end
37
+
38
+ it 'evalutes Ransack aliased attributes' do
39
+ search = Person.wrap_searcher(in_family_with: 'Ernie')
40
+ search.result.should be_an ActiveRecord::Relation
41
+ search.should respond_to :in_family_with
42
+ search.ransack.should respond_to search.ransack_aliases[:in_family_with]
43
+ search.result.to_sql.should match /#{children_people_name_field} LIKE '%Ernie%'/
44
+ search.result.to_sql.should match /#{parents_people_name_field} LIKE '%Ernie%'/
45
+ end
46
+
47
+ it 'evalutes Scopes attributes' do
48
+ search = Person.wrap_searcher(only_with_large_salary: true)
49
+ search.result.should be_an ActiveRecord::Relation
50
+ search.result.to_sql.should match /#{people_salary_field} > 40000/
51
+ end
52
+
53
+ it 'evalutes Ransack alias and Scopes attributes' do
54
+ search = Person.wrap_searcher(in_family_with: 'Ernie', only_with_large_salary: true)
55
+ search.result.should be_an ActiveRecord::Relation
56
+ search.result.to_sql.should match /#{people_salary_field} > 40000/
57
+ search.result.to_sql.should match /#{children_people_name_field} LIKE '%Ernie%'/
58
+ search.result.to_sql.should match /#{parents_people_name_field} LIKE '%Ernie%'/
59
+ end
60
+
61
+ it 'evalutes Ransack and skips Scopes boolean false attributes' do
62
+ search = Person.wrap_searcher(children_name_eq: 'Ernie', only_with_large_salary: false)
63
+ search.result.should be_an ActiveRecord::Relation
64
+ search.result.to_sql.should match /#{children_people_name_field} = 'Ernie'/
65
+ search.result.to_sql.should_not match /#{people_salary_field} > 40000/
66
+ end
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,55 @@
1
+ # :enddoc:
2
+
3
+ require 'machinist/active_record'
4
+ require 'sham'
5
+ require 'faker'
6
+ require 'ransack_wrap'
7
+
8
+ Time.zone = 'Eastern Time (US & Canada)'
9
+ I18n.load_path += Dir[File.join(File.dirname(__FILE__), 'support', '*.yml')]
10
+
11
+ Dir[File.expand_path('../{helpers,support,blueprints}/*.rb', __FILE__)].each do |f|
12
+ require f
13
+ end
14
+
15
+ Sham.define do
16
+ name { Faker::Name.name }
17
+ title { Faker::Lorem.sentence }
18
+ body { Faker::Lorem.paragraph }
19
+ salary { |index| 30000 + (index * 1000) }
20
+ tag_name { Faker::Lorem.words(3).join(' ') }
21
+ note { Faker::Lorem.words(7).join(' ') }
22
+ only_admin { Faker::Lorem.words(3).join(' ') }
23
+ only_search { Faker::Lorem.words(3).join(' ') }
24
+ only_sort { Faker::Lorem.words(3).join(' ') }
25
+ notable_id { |id| id }
26
+ end
27
+
28
+ RSpec.configure do |config|
29
+ config.alias_it_should_behave_like_to :it_has_behavior, 'has behavior'
30
+
31
+ config.before(:suite) do
32
+ puts '=' * 80
33
+ connection_name = ActiveRecord::Base.connection.adapter_name
34
+ puts "Running specs against #{connection_name}, ActiveRecord #{ActiveRecord::VERSION::STRING} and ARel #{Arel::VERSION}..."
35
+ puts '=' * 80
36
+ Schema.create
37
+ end
38
+
39
+ config.before(:all) { Sham.reset(:before_all) }
40
+ config.before(:each) { Sham.reset(:before_each) }
41
+
42
+ config.include RansackWrapHelper
43
+ end
44
+
45
+ RSpec::Matchers.define :be_like do |expected|
46
+ match do |actual|
47
+ actual.gsub(/^\s+|\s+$/, '').gsub(/\s+/, ' ').strip == expected.gsub(/^\s+|\s+$/, '').gsub(/\s+/, ' ').strip
48
+ end
49
+ end
50
+
51
+ RSpec::Matchers.define :have_attribute_method do |expected|
52
+ match do |actual|
53
+ actual.attribute_method?(expected)
54
+ end
55
+ end
@@ -0,0 +1,108 @@
1
+ # :enddoc:
2
+
3
+ require 'active_record'
4
+
5
+ ActiveRecord::Base.establish_connection(adapter: 'sqlite3', database: ':memory:')
6
+
7
+ class Person < ActiveRecord::Base
8
+ if ActiveRecord::VERSION::MAJOR == 3
9
+ default_scope order('id DESC')
10
+ else
11
+ default_scope { order(id: :desc) }
12
+ end
13
+ belongs_to :parent, class_name: 'Person', foreign_key: :parent_id
14
+ has_many :children, class_name: 'Person', foreign_key: :parent_id
15
+ has_many :articles
16
+ has_many :comments
17
+ has_many :authored_article_comments, through: :articles,
18
+ source: :comments, foreign_key: :person_id
19
+ has_many :notes, as: :notable
20
+
21
+ scope :with_large_salary, -> {
22
+ where("\"people\".\"salary\" > ?", 40000)
23
+ }
24
+ end
25
+
26
+ class Article < ActiveRecord::Base
27
+ belongs_to :person
28
+ has_many :comments
29
+ has_and_belongs_to_many :tags
30
+ has_many :notes, as: :notable
31
+ end
32
+
33
+ class Comment < ActiveRecord::Base
34
+ belongs_to :article
35
+ belongs_to :person
36
+ end
37
+
38
+ class Tag < ActiveRecord::Base
39
+ has_and_belongs_to_many :articles
40
+ end
41
+
42
+ class Note < ActiveRecord::Base
43
+ belongs_to :notable, polymorphic: true
44
+ end
45
+
46
+ module Schema
47
+ def self.create
48
+ ActiveRecord::Migration.verbose = false
49
+
50
+ ActiveRecord::Schema.define do
51
+ create_table :people, force: true do |t|
52
+ t.integer :parent_id
53
+ t.string :name
54
+ t.string :email
55
+ t.string :only_search
56
+ t.string :only_sort
57
+ t.string :only_admin
58
+ t.integer :salary
59
+ t.boolean :awesome, default: false
60
+ t.timestamps
61
+ end
62
+
63
+ create_table :articles, force: true do |t|
64
+ t.integer :person_id
65
+ t.string :title
66
+ t.text :body
67
+ end
68
+
69
+ create_table :comments, force: true do |t|
70
+ t.integer :article_id
71
+ t.integer :person_id
72
+ t.text :body
73
+ end
74
+
75
+ create_table :tags, force: true do |t|
76
+ t.string :name
77
+ end
78
+
79
+ create_table :articles_tags, force: true, id: false do |t|
80
+ t.integer :article_id
81
+ t.integer :tag_id
82
+ end
83
+
84
+ create_table :notes, force: true do |t|
85
+ t.integer :notable_id
86
+ t.string :notable_type
87
+ t.string :note
88
+ end
89
+ end
90
+
91
+ 10.times do
92
+ person = Person.make
93
+ Note.make(notable: person)
94
+ 3.times do
95
+ article = Article.make(person: person)
96
+ 3.times do
97
+ article.tags = [Tag.make, Tag.make, Tag.make]
98
+ end
99
+ Note.make(notable: article)
100
+ 10.times do
101
+ Comment.make(article: article, person: person)
102
+ end
103
+ end
104
+ end
105
+
106
+ Comment.make(body: 'First post!', article: Article.make(title: 'Hello, world!'))
107
+ end
108
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ransack_wrap
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tõnis Simo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-06 00:00:00.000000000 Z
11
+ date: 2014-04-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ransack
@@ -16,14 +16,20 @@ dependencies:
16
16
  requirements:
17
17
  - - '>='
18
18
  - !ruby/object:Gem::Version
19
- version: 1.0.0
19
+ version: 0.7.3
20
+ - - <
21
+ - !ruby/object:Gem::Version
22
+ version: '1.2'
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
27
  - - '>='
25
28
  - !ruby/object:Gem::Version
26
- version: 1.0.0
29
+ version: 0.7.3
30
+ - - <
31
+ - !ruby/object:Gem::Version
32
+ version: '1.2'
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: active_attr
29
35
  requirement: !ruby/object:Gem::Requirement
@@ -79,7 +85,7 @@ dependencies:
79
85
  - !ruby/object:Gem::Version
80
86
  version: '4.0'
81
87
  - !ruby/object:Gem::Dependency
82
- name: activemodel
88
+ name: activesupport
83
89
  requirement: !ruby/object:Gem::Requirement
84
90
  requirements:
85
91
  - - '>='
@@ -99,7 +105,21 @@ dependencies:
99
105
  - !ruby/object:Gem::Version
100
106
  version: '4.0'
101
107
  - !ruby/object:Gem::Dependency
102
- name: activesupport
108
+ name: polyamorous
109
+ requirement: !ruby/object:Gem::Requirement
110
+ requirements:
111
+ - - '>='
112
+ - !ruby/object:Gem::Version
113
+ version: 0.5.0
114
+ type: :runtime
115
+ prerelease: false
116
+ version_requirements: !ruby/object:Gem::Requirement
117
+ requirements:
118
+ - - '>='
119
+ - !ruby/object:Gem::Version
120
+ version: 0.5.0
121
+ - !ruby/object:Gem::Dependency
122
+ name: activemodel
103
123
  requirement: !ruby/object:Gem::Requirement
104
124
  requirements:
105
125
  - - '>='
@@ -119,35 +139,91 @@ dependencies:
119
139
  - !ruby/object:Gem::Version
120
140
  version: '4.0'
121
141
  - !ruby/object:Gem::Dependency
122
- name: polyamorous
142
+ name: bundler
143
+ requirement: !ruby/object:Gem::Requirement
144
+ requirements:
145
+ - - ~>
146
+ - !ruby/object:Gem::Version
147
+ version: '1.3'
148
+ type: :development
149
+ prerelease: false
150
+ version_requirements: !ruby/object:Gem::Requirement
151
+ requirements:
152
+ - - ~>
153
+ - !ruby/object:Gem::Version
154
+ version: '1.3'
155
+ - !ruby/object:Gem::Dependency
156
+ name: rake
123
157
  requirement: !ruby/object:Gem::Requirement
124
158
  requirements:
125
159
  - - '>='
126
160
  - !ruby/object:Gem::Version
127
- version: 0.5.0
128
- type: :runtime
161
+ version: '0'
162
+ type: :development
129
163
  prerelease: false
130
164
  version_requirements: !ruby/object:Gem::Requirement
131
165
  requirements:
132
166
  - - '>='
133
167
  - !ruby/object:Gem::Version
134
- version: 0.5.0
168
+ version: '0'
135
169
  - !ruby/object:Gem::Dependency
136
- name: bundler
170
+ name: rspec
137
171
  requirement: !ruby/object:Gem::Requirement
138
172
  requirements:
139
173
  - - ~>
140
174
  - !ruby/object:Gem::Version
141
- version: '1.3'
175
+ version: 2.8.0
142
176
  type: :development
143
177
  prerelease: false
144
178
  version_requirements: !ruby/object:Gem::Requirement
145
179
  requirements:
146
180
  - - ~>
147
181
  - !ruby/object:Gem::Version
148
- version: '1.3'
182
+ version: 2.8.0
149
183
  - !ruby/object:Gem::Dependency
150
- name: rake
184
+ name: machinist
185
+ requirement: !ruby/object:Gem::Requirement
186
+ requirements:
187
+ - - ~>
188
+ - !ruby/object:Gem::Version
189
+ version: 1.0.6
190
+ type: :development
191
+ prerelease: false
192
+ version_requirements: !ruby/object:Gem::Requirement
193
+ requirements:
194
+ - - ~>
195
+ - !ruby/object:Gem::Version
196
+ version: 1.0.6
197
+ - !ruby/object:Gem::Dependency
198
+ name: faker
199
+ requirement: !ruby/object:Gem::Requirement
200
+ requirements:
201
+ - - ~>
202
+ - !ruby/object:Gem::Version
203
+ version: 0.9.5
204
+ type: :development
205
+ prerelease: false
206
+ version_requirements: !ruby/object:Gem::Requirement
207
+ requirements:
208
+ - - ~>
209
+ - !ruby/object:Gem::Version
210
+ version: 0.9.5
211
+ - !ruby/object:Gem::Dependency
212
+ name: sqlite3
213
+ requirement: !ruby/object:Gem::Requirement
214
+ requirements:
215
+ - - ~>
216
+ - !ruby/object:Gem::Version
217
+ version: 1.3.3
218
+ type: :development
219
+ prerelease: false
220
+ version_requirements: !ruby/object:Gem::Requirement
221
+ requirements:
222
+ - - ~>
223
+ - !ruby/object:Gem::Version
224
+ version: 1.3.3
225
+ - !ruby/object:Gem::Dependency
226
+ name: pry
151
227
  requirement: !ruby/object:Gem::Requirement
152
228
  requirements:
153
229
  - - '>='
@@ -183,6 +259,18 @@ files:
183
259
  - lib/ransack_wrap/search.rb
184
260
  - lib/ransack_wrap/version.rb
185
261
  - ransack_wrap.gemspec
262
+ - spec/blueprints/articles.rb
263
+ - spec/blueprints/comments.rb
264
+ - spec/blueprints/notes.rb
265
+ - spec/blueprints/people.rb
266
+ - spec/blueprints/tags.rb
267
+ - spec/console.rb
268
+ - spec/helpers/person_searcher.rb
269
+ - spec/helpers/ransack_wrap_helper.rb
270
+ - spec/ransack_wrap/dependencies_spec.rb
271
+ - spec/ransack_wrap/search_spec.rb
272
+ - spec/spec_helper.rb
273
+ - spec/support/schema.rb
186
274
  homepage: http://github.com/estum/ransack_wrap
187
275
  licenses:
188
276
  - MIT
@@ -208,5 +296,17 @@ signing_key:
208
296
  specification_version: 4
209
297
  summary: Ransack Wrap helps to customize Ransack searching for each models, it allows
210
298
  to easy overwrite and add search keys, scopes and queries
211
- test_files: []
299
+ test_files:
300
+ - spec/blueprints/articles.rb
301
+ - spec/blueprints/comments.rb
302
+ - spec/blueprints/notes.rb
303
+ - spec/blueprints/people.rb
304
+ - spec/blueprints/tags.rb
305
+ - spec/console.rb
306
+ - spec/helpers/person_searcher.rb
307
+ - spec/helpers/ransack_wrap_helper.rb
308
+ - spec/ransack_wrap/dependencies_spec.rb
309
+ - spec/ransack_wrap/search_spec.rb
310
+ - spec/spec_helper.rb
311
+ - spec/support/schema.rb
212
312
  has_rdoc: