parse_resource 1.5.2 → 1.5.4

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -19,3 +19,4 @@ gem "rest-client"
19
19
  gem "activesupport"
20
20
  gem "activemodel"
21
21
 
22
+
data/README.md CHANGED
@@ -49,7 +49,7 @@ If you're using a Rack app, in an initializer, include the following:
49
49
 
50
50
 
51
51
  ```ruby
52
- ParseResource.load!("path/to/parse_resource.yml")
52
+ ParseResource.load!("your_app_id", "your_master_key")
53
53
  ```
54
54
 
55
55
  In a later version, I'll include support for non-Rails/Rack apps.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.5.2
1
+ 1.5.4
@@ -1,6 +1,10 @@
1
1
  require "rubygems"
2
2
  require "bundler/setup"
3
3
  require "active_model"
4
+ require "erb"
5
+ require "rest-client"
6
+ require "json"
7
+ require "active_support"
4
8
 
5
9
  class ParseResource
6
10
  # ParseResource provides an easy way to use Ruby to interace with a Parse.com backend
@@ -18,13 +22,13 @@ class ParseResource
18
22
  # p = Post.new(:title => "cool story")
19
23
  def initialize(attributes = {})
20
24
  if new?
21
- @unsaved_attributes = attributes.symbolize_keys!
25
+ @unsaved_attributes = attributes
22
26
  else
23
- @unsaved_attributes = HashWithIndifferentAccess.new
27
+ @unsaved_attributes = {}
24
28
  end
25
29
  self.attributes = {}
26
30
  self.attributes.merge!(attributes)
27
- self.attributes.symbolize_keys! unless self.attributes.empty?
31
+ self.attributes unless self.attributes.empty?
28
32
  #@field_message = "set in #initialize"
29
33
  create_setters!
30
34
  end
@@ -64,22 +68,21 @@ class ParseResource
64
68
  end
65
69
 
66
70
  class << self
67
- def load!(path="config/parse_resource.yml")
68
- environment = defined?(Rails) && Rails.respond_to?(:env) ? Rails.env : ENV["RACK_ENV"]
69
- @settings = YAML.load(ERB.new(File.new(path).read).result)[environment]
71
+ def load!(app_id, master_key)
72
+ @@settings = {"app_id" => app_id, "master_key" => master_key}
70
73
  end
71
74
 
72
75
  # creates a RESTful resource
73
76
  # sends requests to [base_uri]/[classname]
74
77
  def resource
75
- if @settings.nil?
78
+ if @@settings.nil?
76
79
  path = "config/parse_resource.yml"
77
80
  environment = defined?(Rails) && Rails.respond_to?(:env) ? Rails.env : ENV["RACK_ENV"]
78
- @settings = YAML.load(ERB.new(File.new(path).read).result)[environment]
81
+ @@settings = YAML.load(ERB.new(File.new(path).read).result)[environment]
79
82
  end
80
83
  base_uri = "https://api.parse.com/1/classes/#{model_name}"
81
- app_id = @settings['app_id']
82
- master_key = @settings['master_key']
84
+ app_id = @@settings['app_id']
85
+ master_key = @@settings['master_key']
83
86
  RestClient::Resource.new(base_uri, app_id, master_key)
84
87
  end
85
88
 
@@ -93,14 +96,14 @@ class ParseResource
93
96
  def where(parameters)
94
97
  resp = resource.get(:params => {:where => parameters.to_json})
95
98
  results = JSON.parse(resp)['results']
96
- results.map {|r| model_name.constantize.new(r.symbolize_keys!)}
99
+ results.map {|r| model_name.constantize.new(r)}
97
100
  end
98
101
 
99
102
  # Post.all
100
103
  def all
101
104
  resp = resource.get
102
105
  results = JSON.parse(resp)['results']
103
- results.map {|r| model_name.constantize.new(r.symbolize_keys!)}
106
+ results.map {|r| model_name.constantize.new(r)}
104
107
  end
105
108
 
106
109
  # Post.create(:title => "new post")
@@ -140,9 +143,9 @@ class ParseResource
140
143
 
141
144
  def create
142
145
  resp = self.resource.post(@unsaved_attributes.to_json, :content_type => "application/json")
143
- @attributes.merge!(JSON.parse(resp).symbolize_keys!)
146
+ @attributes.merge!(JSON.parse(resp))
144
147
  @attributes.merge!(@unsaved_attributes)
145
- @unsaved_attributes = HashWithIndifferentAccess.new
148
+ @unsaved_attributes = {}
146
149
  create_setters!
147
150
  self
148
151
  end
@@ -156,7 +159,7 @@ class ParseResource
156
159
  rescue false
157
160
  end
158
161
 
159
- def update(attributes = HashWithIndifferentAccess.new)
162
+ def update(attributes = {})
160
163
  @unsaved_attributes.merge!(attributes)
161
164
 
162
165
  put_attrs = @unsaved_attributes
@@ -167,15 +170,15 @@ class ParseResource
167
170
 
168
171
  resp = self.instance_resource.put(put_attrs, :content_type => "application/json")
169
172
 
170
- @attributes.merge!(JSON.parse(resp).symbolize_keys!)
173
+ @attributes.merge!(JSON.parse(resp))
171
174
  @attributes.merge!(@unsaved_attributes)
172
- @unsaved_attributes = HashWithIndifferentAccess.new
175
+ @unsaved_attributes = {}
173
176
  create_setters!
174
177
 
175
178
  self
176
179
  end
177
180
 
178
- def update_attributes(attributes = HashWithIndifferentAccess.new)
181
+ def update_attributes(attributes = {})
179
182
  self.update(attributes)
180
183
  end
181
184
 
@@ -189,12 +192,12 @@ class ParseResource
189
192
  # provides access to @attributes for getting and setting
190
193
  def attributes
191
194
  @attributes ||= self.class.class_attributes
192
- @attributes.symbolize_keys!
195
+ @attributes
193
196
  end
194
197
 
195
198
  def attributes=(n)
196
199
  @attributes = n
197
- @attributes.symbolize_keys!
200
+ @attributes
198
201
  end
199
202
 
200
203
  # aliasing for idiomatic Ruby
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "parse_resource"
8
- s.version = "1.5.2"
8
+ s.version = "1.5.4"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Alan deLevie"]
12
- s.date = "2011-09-20"
12
+ s.date = "2011-09-22"
13
13
  s.description = ""
14
14
  s.email = "adelevie@gmail.com"
15
15
  s.extra_rdoc_files = [
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: parse_resource
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.2
4
+ version: 1.5.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-09-20 00:00:00.000000000Z
12
+ date: 2011-09-22 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rest-client
16
- requirement: &73363310 !ruby/object:Gem::Requirement
16
+ requirement: &75448160 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *73363310
24
+ version_requirements: *75448160
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: activesupport
27
- requirement: &73363010 !ruby/object:Gem::Requirement
27
+ requirement: &75447400 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *73363010
35
+ version_requirements: *75447400
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: activemodel
38
- requirement: &73362680 !ruby/object:Gem::Requirement
38
+ requirement: &75446670 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *73362680
46
+ version_requirements: *75446670
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: bundler
49
- requirement: &73362410 !ruby/object:Gem::Requirement
49
+ requirement: &75446160 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 1.0.0
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *73362410
57
+ version_requirements: *75446160
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: jeweler
60
- requirement: &73362150 !ruby/object:Gem::Requirement
60
+ requirement: &75445730 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: 1.6.4
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *73362150
68
+ version_requirements: *75445730
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rcov
71
- requirement: &73361880 !ruby/object:Gem::Requirement
71
+ requirement: &75445230 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *73361880
79
+ version_requirements: *75445230
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: reek
82
- requirement: &73361580 !ruby/object:Gem::Requirement
82
+ requirement: &75444770 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ~>
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: 1.2.8
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *73361580
90
+ version_requirements: *75444770
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: rest-client
93
- requirement: &73361240 !ruby/object:Gem::Requirement
93
+ requirement: &75444360 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ! '>='
@@ -98,10 +98,10 @@ dependencies:
98
98
  version: '0'
99
99
  type: :development
100
100
  prerelease: false
101
- version_requirements: *73361240
101
+ version_requirements: *75444360
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: activesupport
104
- requirement: &73360910 !ruby/object:Gem::Requirement
104
+ requirement: &75443860 !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
107
  - - ! '>='
@@ -109,10 +109,10 @@ dependencies:
109
109
  version: '0'
110
110
  type: :development
111
111
  prerelease: false
112
- version_requirements: *73360910
112
+ version_requirements: *75443860
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: activemodel
115
- requirement: &73360620 !ruby/object:Gem::Requirement
115
+ requirement: &75443330 !ruby/object:Gem::Requirement
116
116
  none: false
117
117
  requirements:
118
118
  - - ! '>='
@@ -120,7 +120,7 @@ dependencies:
120
120
  version: '0'
121
121
  type: :development
122
122
  prerelease: false
123
- version_requirements: *73360620
123
+ version_requirements: *75443330
124
124
  description: ''
125
125
  email: adelevie@gmail.com
126
126
  executables: []
@@ -161,7 +161,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
161
161
  version: '0'
162
162
  segments:
163
163
  - 0
164
- hash: 105836015
164
+ hash: 982262131
165
165
  required_rubygems_version: !ruby/object:Gem::Requirement
166
166
  none: false
167
167
  requirements: