mongosteen 0.1.3 → 0.1.7
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 +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
|
-
|