mongosteen 0.1.3 → 0.1.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.DS_Store +0 -0
- data/.gitignore +3 -0
- data/Gemfile +8 -0
- data/Gemfile.lock +204 -0
- data/README.md +32 -55
- data/Rakefile +16 -2
- data/lib/mongosteen.rb +24 -13
- data/lib/mongosteen/actions.rb +6 -0
- data/lib/mongosteen/base_helpers.rb +6 -7
- data/lib/mongosteen/class_methods.rb +6 -2
- data/lib/mongosteen/permitted_params.rb +3 -34
- data/lib/mongosteen/version.rb +1 -1
- data/mongosteen.gemspec +13 -4
- data/test/.DS_Store +0 -0
- data/test/controllers/.keep +0 -0
- data/test/helpers/.keep +0 -0
- data/test/integration/api_test.rb +95 -0
- data/test/rails_app/.DS_Store +0 -0
- data/test/rails_app/Rakefile +6 -0
- data/test/rails_app/app/assets/images/.keep +0 -0
- data/test/rails_app/app/assets/javascripts/application.js +16 -0
- data/test/rails_app/app/assets/stylesheets/application.css +15 -0
- data/test/rails_app/app/controllers/application_controller.rb +5 -0
- data/test/rails_app/app/controllers/concerns/.keep +0 -0
- data/test/rails_app/app/controllers/test_items_controller.rb +5 -0
- data/test/rails_app/app/controllers/test_permit_items_controller.rb +9 -0
- data/test/rails_app/app/helpers/application_helper.rb +2 -0
- data/test/rails_app/app/mailers/.keep +0 -0
- data/test/rails_app/app/models/concerns/.keep +0 -0
- data/test/rails_app/app/models/test_item.rb +16 -0
- data/test/rails_app/app/models/test_permit_item.rb +7 -0
- data/test/rails_app/app/views/layouts/application.html.erb +14 -0
- data/test/rails_app/bin/bundle +3 -0
- data/test/rails_app/bin/rails +8 -0
- data/test/rails_app/bin/rake +8 -0
- data/test/rails_app/bin/setup +29 -0
- data/test/rails_app/bin/spring +15 -0
- data/test/rails_app/config.ru +4 -0
- data/test/rails_app/config/application.rb +32 -0
- data/test/rails_app/config/boot.rb +3 -0
- data/test/rails_app/config/environment.rb +5 -0
- data/test/rails_app/config/environments/development.rb +38 -0
- data/test/rails_app/config/environments/production.rb +76 -0
- data/test/rails_app/config/environments/test.rb +42 -0
- data/test/rails_app/config/initializers/assets.rb +11 -0
- data/test/rails_app/config/initializers/backtrace_silencers.rb +7 -0
- data/test/rails_app/config/initializers/cookies_serializer.rb +3 -0
- data/test/rails_app/config/initializers/filter_parameter_logging.rb +4 -0
- data/test/rails_app/config/initializers/inflections.rb +16 -0
- data/test/rails_app/config/initializers/mime_types.rb +4 -0
- data/test/rails_app/config/initializers/session_store.rb +3 -0
- data/test/rails_app/config/initializers/wrap_parameters.rb +9 -0
- data/test/rails_app/config/locales/en.yml +23 -0
- data/test/rails_app/config/mongoid.yml +9 -0
- data/test/rails_app/config/routes.rb +6 -0
- data/test/rails_app/config/secrets.yml +22 -0
- data/test/rails_app/db/seeds.rb +7 -0
- data/test/rails_app/lib/assets/.keep +0 -0
- data/test/rails_app/lib/tasks/.keep +0 -0
- data/test/rails_app/public/404.html +67 -0
- data/test/rails_app/public/422.html +67 -0
- data/test/rails_app/public/500.html +66 -0
- data/test/rails_app/public/favicon.ico +0 -0
- data/test/rails_app/public/robots.txt +5 -0
- data/test/rails_app/vendor/assets/javascripts/.keep +0 -0
- data/test/rails_app/vendor/assets/stylesheets/.keep +0 -0
- data/test/test_helper.rb +16 -0
- metadata +158 -22
- data/CONTRIBUTING.md +0 -24
- data/lib/mongoid/fake_criteria.rb +0 -24
- data/lib/mongoid/serializable_id.rb +0 -19
- data/lib/mongoid/sorted_relations.rb +0 -61
- data/lib/mongosteen/engine.rb +0 -5
@@ -1,24 +0,0 @@
|
|
1
|
-
# NOTE: this is required by sorted_relations.rb
|
2
|
-
module Mongoid
|
3
|
-
class FakeCriteria
|
4
|
-
def initialize(documents)
|
5
|
-
@documents = documents
|
6
|
-
end
|
7
|
-
|
8
|
-
def limit(quantity)
|
9
|
-
Mongoid::FakeCriteria.new(@documents[0..quantity-1])
|
10
|
-
end
|
11
|
-
|
12
|
-
def raw
|
13
|
-
@documents
|
14
|
-
end
|
15
|
-
|
16
|
-
def as_json(options={})
|
17
|
-
@documents.as_json(options)
|
18
|
-
end
|
19
|
-
|
20
|
-
def method_missing(*args, &block)
|
21
|
-
@documents.send(*args, &block)
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
@@ -1,19 +0,0 @@
|
|
1
|
-
module Mongoid
|
2
|
-
module SerializableId
|
3
|
-
extend ActiveSupport::Concern
|
4
|
-
|
5
|
-
def serializable_hash(options={})
|
6
|
-
attrs = super(options)
|
7
|
-
attrs.each_pair do |k, v|
|
8
|
-
if k.end_with?('_id')
|
9
|
-
attrs[k] = v.to_s
|
10
|
-
end
|
11
|
-
|
12
|
-
if k.end_with?('_ids')
|
13
|
-
attrs[k] = attrs[k].collect { |id| id.to_s }
|
14
|
-
end
|
15
|
-
end
|
16
|
-
attrs
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
@@ -1,61 +0,0 @@
|
|
1
|
-
# NOTE: this is an updated version of mongoid-sorted-relations gem
|
2
|
-
# https://github.com/demarque/mongoid-sorted-relations
|
3
|
-
|
4
|
-
# NOTE: the problem is that mongoid returnes object in random order
|
5
|
-
# for relation queries, this patch stores relations ids order
|
6
|
-
# and sort objects using cached order.
|
7
|
-
|
8
|
-
module Mongoid
|
9
|
-
module SortedRelations
|
10
|
-
extend ActiveSupport::Concern
|
11
|
-
|
12
|
-
included do
|
13
|
-
after_initialize :define_sorted_methods
|
14
|
-
after_initialize :cache_relations_ids_order
|
15
|
-
after_save :cache_relations_ids_order
|
16
|
-
end
|
17
|
-
|
18
|
-
def define_sorted_methods
|
19
|
-
self.relations.each do |key, relation|
|
20
|
-
if [:has_many, :has_and_belongs_to_many].include? relation.macro
|
21
|
-
self.class.send(:define_method, "sorted_#{relation.name}") do
|
22
|
-
sorted_relation(relation)
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
def cache_relations_ids_order
|
29
|
-
@__sorted_relation_criterias = {}
|
30
|
-
@__sorted_relation_ids = {}
|
31
|
-
|
32
|
-
self.relations.each do |key, relation|
|
33
|
-
if [:has_many, :has_and_belongs_to_many].include? relation.macro
|
34
|
-
relation_ids = self.send(relation.key)
|
35
|
-
|
36
|
-
@__sorted_relation_ids[relation.key] = [ relation_ids ].flatten.map do |rid|
|
37
|
-
rid.to_s
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
def sorted_relation(relation)
|
44
|
-
@__sorted_relation_criterias[relation.name] ||= sorted_related_criteria(relation)
|
45
|
-
end
|
46
|
-
|
47
|
-
def sorted_related_criteria(relation)
|
48
|
-
related_documents = self.send(relation.name)
|
49
|
-
|
50
|
-
sorted_documents = related_documents.sort_by do |x|
|
51
|
-
@__sorted_relation_ids[relation.key].index(x.id.to_s)
|
52
|
-
end
|
53
|
-
|
54
|
-
return Mongoid::FakeCriteria.new(sorted_documents)
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|