her 0.8.2 → 0.9.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 +4 -4
- data/.rspec +1 -1
- data/.rubocop.yml +1291 -0
- data/.travis.yml +2 -0
- data/README.md +23 -3
- data/her.gemspec +1 -3
- data/lib/her/middleware/json_api_parser.rb +1 -1
- data/lib/her/model/associations/association.rb +31 -0
- data/lib/her/model/associations/association_proxy.rb +1 -1
- data/lib/her/model/attributes.rb +2 -0
- data/lib/her/model/orm.rb +79 -6
- data/lib/her/model/parse.rb +8 -12
- data/lib/her/model/relation.rb +45 -1
- data/lib/her/version.rb +1 -1
- data/spec/api_spec.rb +34 -31
- data/spec/collection_spec.rb +25 -10
- data/spec/json_api/model_spec.rb +75 -72
- data/spec/middleware/accept_json_spec.rb +1 -1
- data/spec/middleware/first_level_parse_json_spec.rb +20 -20
- data/spec/middleware/json_api_parser_spec.rb +26 -7
- data/spec/middleware/second_level_parse_json_spec.rb +8 -9
- data/spec/model/associations/association_proxy_spec.rb +2 -5
- data/spec/model/associations_spec.rb +248 -161
- data/spec/model/attributes_spec.rb +106 -99
- data/spec/model/callbacks_spec.rb +58 -26
- data/spec/model/dirty_spec.rb +30 -29
- data/spec/model/http_spec.rb +67 -35
- data/spec/model/introspection_spec.rb +26 -22
- data/spec/model/nested_attributes_spec.rb +31 -31
- data/spec/model/orm_spec.rb +312 -155
- data/spec/model/parse_spec.rb +77 -77
- data/spec/model/paths_spec.rb +109 -109
- data/spec/model/relation_spec.rb +76 -68
- data/spec/model/validations_spec.rb +6 -6
- data/spec/model_spec.rb +17 -17
- data/spec/spec_helper.rb +2 -3
- data/spec/support/macros/model_macros.rb +2 -2
- metadata +32 -59
data/spec/model/relation_spec.rb
CHANGED
@@ -5,22 +5,23 @@ describe Her::Model::Relation do
|
|
5
5
|
describe :where do
|
6
6
|
context "for base classes" do
|
7
7
|
before do
|
8
|
-
Her::API.setup :
|
8
|
+
Her::API.setup url: "https://api.example.com" do |builder|
|
9
9
|
builder.use Her::Middleware::FirstLevelParseJSON
|
10
10
|
builder.adapter :test do |stub|
|
11
|
-
stub.get("/users?foo=1&bar=2") {
|
12
|
-
stub.get("/users?admin=1") {
|
11
|
+
stub.get("/users?foo=1&bar=2") { ok! [{ id: 2, fullname: "Tobias Fünke" }] }
|
12
|
+
stub.get("/users?admin=1") { ok! [{ id: 1, fullname: "Tobias Fünke" }] }
|
13
|
+
stub.get("/users?id=3&foo=2") { ok! [{ id: 3, fullname: "Tobias Fünke" }] }
|
13
14
|
|
14
|
-
stub.get("/users") do
|
15
|
+
stub.get("/users") do
|
15
16
|
ok! [
|
16
|
-
{ :
|
17
|
-
{ :
|
18
|
-
@created_user
|
17
|
+
{ id: 1, fullname: "Tobias Fünke" },
|
18
|
+
{ id: 2, fullname: "Lindsay Fünke" },
|
19
|
+
@created_user
|
19
20
|
].compact
|
20
21
|
end
|
21
22
|
|
22
|
-
stub.post(
|
23
|
-
@created_user = { :
|
23
|
+
stub.post("/users") do
|
24
|
+
@created_user = { id: 3, fullname: "George Michael Bluth" }
|
24
25
|
ok! @created_user
|
25
26
|
end
|
26
27
|
end
|
@@ -30,40 +31,47 @@ describe Her::Model::Relation do
|
|
30
31
|
end
|
31
32
|
|
32
33
|
it "doesn't fetch the data immediatly" do
|
33
|
-
Foo::User.
|
34
|
-
@users = Foo::User.where(:
|
34
|
+
expect(Foo::User).to receive(:request).never
|
35
|
+
@users = Foo::User.where(admin: 1)
|
35
36
|
end
|
36
37
|
|
37
38
|
it "fetches the data and passes query parameters" do
|
38
|
-
Foo::User.
|
39
|
-
@users = Foo::User.where(:
|
40
|
-
@users.
|
41
|
-
@users.size.
|
39
|
+
expect(Foo::User).to receive(:request).once.and_call_original
|
40
|
+
@users = Foo::User.where(admin: 1)
|
41
|
+
expect(@users).to respond_to(:length)
|
42
|
+
expect(@users.size).to eql 1
|
43
|
+
end
|
44
|
+
|
45
|
+
it "fetches the data by parameters including primary_key" do
|
46
|
+
expect(Foo::User).to receive(:request).once.and_call_original
|
47
|
+
@users = Foo::User.where(id: 3, foo: 2)
|
48
|
+
expect(@users).to respond_to(:length)
|
49
|
+
expect(@users.size).to eql 1
|
42
50
|
end
|
43
51
|
|
44
52
|
it "chains multiple where statements" do
|
45
|
-
@user = Foo::User.where(:
|
46
|
-
@user.id.
|
53
|
+
@user = Foo::User.where(foo: 1).where(bar: 2).first
|
54
|
+
expect(@user.id).to eq(2)
|
47
55
|
end
|
48
56
|
|
49
57
|
it "does not reuse relations" do
|
50
|
-
Foo::User.all.size.
|
51
|
-
Foo::User.create(:
|
52
|
-
Foo::User.all.size.
|
58
|
+
expect(Foo::User.all.size).to eql 2
|
59
|
+
expect(Foo::User.create(fullname: "George Michael Bluth").id).to eq(3)
|
60
|
+
expect(Foo::User.all.size).to eql 3
|
53
61
|
end
|
54
62
|
end
|
55
63
|
|
56
64
|
context "for parent class" do
|
57
65
|
before do
|
58
|
-
Her::API.setup :
|
66
|
+
Her::API.setup url: "https://api.example.com" do |builder|
|
59
67
|
builder.use Her::Middleware::FirstLevelParseJSON
|
60
68
|
builder.adapter :test do |stub|
|
61
|
-
stub.get("/users?page=2") {
|
69
|
+
stub.get("/users?page=2") { ok! [{ id: 1, fullname: "Tobias Fünke" }, { id: 2, fullname: "Lindsay Fünke" }] }
|
62
70
|
end
|
63
71
|
end
|
64
72
|
|
65
73
|
spawn_model("Foo::Model") do
|
66
|
-
scope :page,
|
74
|
+
scope :page, ->(page) { where(page: page) }
|
67
75
|
end
|
68
76
|
|
69
77
|
class User < Foo::Model; end
|
@@ -72,18 +80,18 @@ describe Her::Model::Relation do
|
|
72
80
|
|
73
81
|
it "propagates the scopes through its children" do
|
74
82
|
@users = User.page(2)
|
75
|
-
@users.length.
|
83
|
+
expect(@users.length).to eq(2)
|
76
84
|
end
|
77
85
|
end
|
78
86
|
end
|
79
87
|
|
80
88
|
describe :create do
|
81
89
|
before do
|
82
|
-
Her::API.setup :
|
90
|
+
Her::API.setup url: "https://api.example.com" do |builder|
|
83
91
|
builder.use Her::Middleware::FirstLevelParseJSON
|
84
92
|
builder.use Faraday::Request::UrlEncoded
|
85
93
|
builder.adapter :test do |stub|
|
86
|
-
stub.post("/users") { |env| ok! :
|
94
|
+
stub.post("/users") { |env| ok! id: 1, fullname: params(env)[:fullname], email: params(env)[:email] }
|
87
95
|
end
|
88
96
|
end
|
89
97
|
|
@@ -92,19 +100,19 @@ describe Her::Model::Relation do
|
|
92
100
|
|
93
101
|
context "with a single where call" do
|
94
102
|
it "creates a resource and passes the query parameters" do
|
95
|
-
@user = Foo::User.where(:
|
96
|
-
@user.id.
|
97
|
-
@user.fullname.
|
98
|
-
@user.email.
|
103
|
+
@user = Foo::User.where(fullname: "Tobias Fünke", email: "tobias@bluth.com").create
|
104
|
+
expect(@user.id).to eq(1)
|
105
|
+
expect(@user.fullname).to eq("Tobias Fünke")
|
106
|
+
expect(@user.email).to eq("tobias@bluth.com")
|
99
107
|
end
|
100
108
|
end
|
101
109
|
|
102
110
|
context "with multiple where calls" do
|
103
111
|
it "creates a resource and passes the query parameters" do
|
104
|
-
@user = Foo::User.where(:
|
105
|
-
@user.id.
|
106
|
-
@user.fullname.
|
107
|
-
@user.email.
|
112
|
+
@user = Foo::User.where(fullname: "Tobias Fünke").create(email: "tobias@bluth.com")
|
113
|
+
expect(@user.id).to eq(1)
|
114
|
+
expect(@user.fullname).to eq("Tobias Fünke")
|
115
|
+
expect(@user.email).to eq("tobias@bluth.com")
|
108
116
|
end
|
109
117
|
end
|
110
118
|
end
|
@@ -113,114 +121,114 @@ describe Her::Model::Relation do
|
|
113
121
|
before { spawn_model "Foo::User" }
|
114
122
|
|
115
123
|
it "handles new resource with build" do
|
116
|
-
@new_user = Foo::User.where(:
|
117
|
-
@new_user.new
|
118
|
-
@new_user.fullname.
|
124
|
+
@new_user = Foo::User.where(fullname: "Tobias Fünke").build
|
125
|
+
expect(@new_user.new?).to be_truthy
|
126
|
+
expect(@new_user.fullname).to eq("Tobias Fünke")
|
119
127
|
end
|
120
128
|
end
|
121
129
|
|
122
130
|
describe :scope do
|
123
131
|
before do
|
124
|
-
Her::API.setup :
|
132
|
+
Her::API.setup url: "https://api.example.com" do |builder|
|
125
133
|
builder.use Her::Middleware::FirstLevelParseJSON
|
126
134
|
builder.adapter :test do |stub|
|
127
|
-
stub.get("/users?what=4&where=3") {
|
128
|
-
stub.get("/users?what=2") {
|
129
|
-
stub.get("/users?where=6") {
|
135
|
+
stub.get("/users?what=4&where=3") { ok! [{ id: 3, fullname: "Maeby Fünke" }] }
|
136
|
+
stub.get("/users?what=2") { ok! [{ id: 2, fullname: "Lindsay Fünke" }] }
|
137
|
+
stub.get("/users?where=6") { ok! [{ id: 4, fullname: "Tobias Fünke" }] }
|
130
138
|
end
|
131
139
|
end
|
132
140
|
|
133
|
-
spawn_model
|
134
|
-
scope :foo,
|
135
|
-
scope :bar,
|
136
|
-
scope :baz,
|
141
|
+
spawn_model "Foo::User" do
|
142
|
+
scope :foo, ->(v) { where(what: v) }
|
143
|
+
scope :bar, ->(v) { where(where: v) }
|
144
|
+
scope :baz, -> { bar(6) }
|
137
145
|
end
|
138
146
|
end
|
139
147
|
|
140
148
|
it "passes query parameters" do
|
141
149
|
@user = Foo::User.foo(2).first
|
142
|
-
@user.id.
|
150
|
+
expect(@user.id).to eq(2)
|
143
151
|
end
|
144
152
|
|
145
153
|
it "passes multiple query parameters" do
|
146
154
|
@user = Foo::User.foo(4).bar(3).first
|
147
|
-
@user.id.
|
155
|
+
expect(@user.id).to eq(3)
|
148
156
|
end
|
149
157
|
|
150
158
|
it "handles embedded scopes" do
|
151
159
|
@user = Foo::User.baz.first
|
152
|
-
@user.id.
|
160
|
+
expect(@user.id).to eq(4)
|
153
161
|
end
|
154
162
|
end
|
155
163
|
|
156
164
|
describe :default_scope do
|
157
165
|
context "for new objects" do
|
158
166
|
before do
|
159
|
-
spawn_model
|
160
|
-
default_scope
|
161
|
-
default_scope
|
167
|
+
spawn_model "Foo::User" do
|
168
|
+
default_scope -> { where(active: true) }
|
169
|
+
default_scope -> { where(admin: true) }
|
162
170
|
end
|
163
171
|
end
|
164
172
|
|
165
173
|
it "should apply the scope to the attributes" do
|
166
|
-
Foo::User.new.
|
167
|
-
Foo::User.new.
|
174
|
+
expect(Foo::User.new).to be_active
|
175
|
+
expect(Foo::User.new).to be_admin
|
168
176
|
end
|
169
177
|
end
|
170
178
|
|
171
179
|
context "for fetched resources" do
|
172
180
|
before do
|
173
|
-
Her::API.setup :
|
181
|
+
Her::API.setup url: "https://api.example.com" do |builder|
|
174
182
|
builder.use Her::Middleware::FirstLevelParseJSON
|
175
183
|
builder.use Faraday::Request::UrlEncoded
|
176
184
|
builder.adapter :test do |stub|
|
177
|
-
stub.post("/users") { |env| ok! :
|
185
|
+
stub.post("/users") { |env| ok! id: 3, active: (params(env)[:active] == "true" ? true : false) }
|
178
186
|
end
|
179
187
|
end
|
180
188
|
|
181
|
-
spawn_model
|
182
|
-
default_scope
|
189
|
+
spawn_model "Foo::User" do
|
190
|
+
default_scope -> { where(active: true) }
|
183
191
|
end
|
184
192
|
end
|
185
193
|
|
186
|
-
it("should apply the scope to the request") { Foo::User.create.
|
194
|
+
it("should apply the scope to the request") { expect(Foo::User.create).to be_active }
|
187
195
|
end
|
188
196
|
|
189
197
|
context "for fetched collections" do
|
190
198
|
before do
|
191
|
-
Her::API.setup :
|
199
|
+
Her::API.setup url: "https://api.example.com" do |builder|
|
192
200
|
builder.use Her::Middleware::FirstLevelParseJSON
|
193
201
|
builder.use Faraday::Request::UrlEncoded
|
194
202
|
builder.adapter :test do |stub|
|
195
|
-
stub.get("/users?active=true") { |env| ok! [{ :
|
203
|
+
stub.get("/users?active=true") { |env| ok! [{ id: 3, active: (params(env)[:active] == "true" ? true : false) }] }
|
196
204
|
end
|
197
205
|
end
|
198
206
|
|
199
|
-
spawn_model
|
200
|
-
default_scope
|
207
|
+
spawn_model "Foo::User" do
|
208
|
+
default_scope -> { where(active: true) }
|
201
209
|
end
|
202
210
|
end
|
203
211
|
|
204
|
-
it("should apply the scope to the request") { Foo::User.all.first.
|
212
|
+
it("should apply the scope to the request") { expect(Foo::User.all.first).to be_active }
|
205
213
|
end
|
206
214
|
end
|
207
215
|
|
208
216
|
describe :map do
|
209
217
|
before do
|
210
|
-
Her::API.setup :
|
218
|
+
Her::API.setup url: "https://api.example.com" do |builder|
|
211
219
|
builder.use Her::Middleware::FirstLevelParseJSON
|
212
220
|
builder.adapter :test do |stub|
|
213
|
-
stub.get("/users") do
|
214
|
-
ok! [{ :
|
221
|
+
stub.get("/users") do
|
222
|
+
ok! [{ id: 1, fullname: "Tobias Fünke" }, { id: 2, fullname: "Lindsay Fünke" }]
|
215
223
|
end
|
216
224
|
end
|
217
225
|
end
|
218
226
|
|
219
|
-
spawn_model
|
227
|
+
spawn_model "Foo::User"
|
220
228
|
end
|
221
229
|
|
222
230
|
it "delegates the method to the fetched collection" do
|
223
|
-
Foo::User.all.map(&:fullname).
|
231
|
+
expect(Foo::User.all.map(&:fullname)).to eq(["Tobias Fünke", "Lindsay Fünke"])
|
224
232
|
end
|
225
233
|
end
|
226
234
|
end
|
@@ -13,12 +13,12 @@ describe "Her::Model and ActiveModel::Validations" do
|
|
13
13
|
|
14
14
|
it "validates attributes when calling #valid?" do
|
15
15
|
user = Foo::User.new
|
16
|
-
user.
|
17
|
-
user.errors.full_messages.
|
18
|
-
user.errors.full_messages.
|
16
|
+
expect(user).not_to be_valid
|
17
|
+
expect(user.errors.full_messages).to include("Fullname can't be blank")
|
18
|
+
expect(user.errors.full_messages).to include("Email can't be blank")
|
19
19
|
user.fullname = "Tobias Fünke"
|
20
20
|
user.email = "tobias@bluthcompany.com"
|
21
|
-
user.
|
21
|
+
expect(user).to be_valid
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
@@ -35,8 +35,8 @@ describe "Her::Model and ActiveModel::Validations" do
|
|
35
35
|
end
|
36
36
|
|
37
37
|
it "validates attributes when calling #valid?" do
|
38
|
-
user = User.new(:
|
39
|
-
user.errors.
|
38
|
+
user = User.new(_errors: ["Email cannot be blank"])
|
39
|
+
expect(user.errors).to include("Email cannot be blank")
|
40
40
|
end
|
41
41
|
end
|
42
42
|
end
|
data/spec/model_spec.rb
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
-
require
|
2
|
+
require "spec_helper"
|
3
3
|
|
4
4
|
describe Her::Model do
|
5
5
|
before do
|
6
|
-
Her::API.setup :
|
6
|
+
Her::API.setup url: "https://api.example.com" do |connection|
|
7
7
|
connection.use Her::Middleware::FirstLevelParseJSON
|
8
8
|
connection.adapter :test do |stub|
|
9
|
-
stub.get("/users/1") {
|
10
|
-
stub.get("/users/1/comments") {
|
9
|
+
stub.get("/users/1") { [200, {}, { id: 1, name: "Tobias Fünke" }.to_json] }
|
10
|
+
stub.get("/users/1/comments") { [200, {}, [{ id: 4, body: "They're having a FIRESALE?" }].to_json] }
|
11
11
|
end
|
12
12
|
end
|
13
13
|
|
@@ -17,28 +17,28 @@ describe Her::Model do
|
|
17
17
|
subject { Foo::User.find(1) }
|
18
18
|
|
19
19
|
describe :has_key? do
|
20
|
-
it {
|
21
|
-
it {
|
22
|
-
it {
|
23
|
-
it {
|
20
|
+
it { is_expected.not_to have_key(:unknown_method_for_a_user) }
|
21
|
+
it { is_expected.not_to have_key(:unknown_method_for_a_user) }
|
22
|
+
it { is_expected.to have_key(:name) }
|
23
|
+
it { is_expected.to have_key(:comments) }
|
24
24
|
end
|
25
25
|
|
26
26
|
describe :serialization do
|
27
|
-
it
|
27
|
+
it "should be serialized without an error" do
|
28
28
|
expect { Marshal.dump(subject.comments) }.not_to raise_error
|
29
29
|
end
|
30
30
|
|
31
|
-
it
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
31
|
+
it "should correctly load serialized object" do
|
32
|
+
serialized_comments = Marshal.load(Marshal.dump(subject.comments))
|
33
|
+
expect(subject.comments.size).to eq(serialized_comments.size)
|
34
|
+
expect(subject.comments.first.id).to eq(serialized_comments.first.id)
|
35
|
+
expect(subject.comments.first.body).to eq(serialized_comments.first.body)
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
39
39
|
describe :[] do
|
40
|
-
it {
|
41
|
-
specify { subject[:name].
|
42
|
-
specify { subject[:comments].first.body.
|
40
|
+
it { is_expected.not_to have_key(:unknown_method_for_a_user) }
|
41
|
+
specify { expect(subject[:name]).to eq("Tobias Fünke") }
|
42
|
+
specify { expect(subject[:comments].first.body).to eq("They're having a FIRESALE?") }
|
43
43
|
end
|
44
44
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,11 +1,10 @@
|
|
1
|
-
|
1
|
+
$LOAD_PATH.unshift File.join(File.dirname(__FILE__), "..", "lib")
|
2
2
|
|
3
3
|
require "rspec"
|
4
|
-
require "rspec/its"
|
5
4
|
require "her"
|
6
5
|
|
7
6
|
# Require everything in `spec/support`
|
8
|
-
Dir[File.expand_path(
|
7
|
+
Dir[File.expand_path("../../spec/support/**/*.rb", __FILE__)].map(&method(:require))
|
9
8
|
|
10
9
|
# Remove ActiveModel deprecation message
|
11
10
|
I18n.enforce_available_locales = false
|
@@ -3,7 +3,7 @@ module Her
|
|
3
3
|
module Macros
|
4
4
|
module ModelMacros
|
5
5
|
# Create a class and automatically inject Her::Model into it
|
6
|
-
def spawn_model(klass, options={}, &block)
|
6
|
+
def spawn_model(klass, options = {}, &block)
|
7
7
|
super_class = options[:super_class]
|
8
8
|
model_type = options[:type] || Her::Model
|
9
9
|
new_class = if super_class
|
@@ -12,7 +12,7 @@ module Her
|
|
12
12
|
Class.new
|
13
13
|
end
|
14
14
|
if klass =~ /::/
|
15
|
-
base, submodel = klass.split(/::/).map
|
15
|
+
base, submodel = klass.split(/::/).map(&:to_sym)
|
16
16
|
Object.const_set(base, Module.new) unless Object.const_defined?(base)
|
17
17
|
Object.const_get(base).module_eval do
|
18
18
|
remove_const submodel if constants.map(&:to_sym).include?(submodel)
|
metadata
CHANGED
@@ -1,157 +1,129 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: her
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rémi Prévost
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-06-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '10.0'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '10.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rspec
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - ~>
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '3.5'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - ~>
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: rspec-its
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - ~>
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '1.0'
|
48
|
-
type: :development
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - ~>
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '1.0'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: fivemat
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - ~>
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '1.2'
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - ~>
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '1.2'
|
40
|
+
version: '3.5'
|
69
41
|
- !ruby/object:Gem::Dependency
|
70
42
|
name: json
|
71
43
|
requirement: !ruby/object:Gem::Requirement
|
72
44
|
requirements:
|
73
|
-
- - ~>
|
45
|
+
- - "~>"
|
74
46
|
- !ruby/object:Gem::Version
|
75
47
|
version: '1.8'
|
76
48
|
type: :development
|
77
49
|
prerelease: false
|
78
50
|
version_requirements: !ruby/object:Gem::Requirement
|
79
51
|
requirements:
|
80
|
-
- - ~>
|
52
|
+
- - "~>"
|
81
53
|
- !ruby/object:Gem::Version
|
82
54
|
version: '1.8'
|
83
55
|
- !ruby/object:Gem::Dependency
|
84
56
|
name: activemodel
|
85
57
|
requirement: !ruby/object:Gem::Requirement
|
86
58
|
requirements:
|
87
|
-
- -
|
59
|
+
- - ">="
|
88
60
|
- !ruby/object:Gem::Version
|
89
61
|
version: 3.0.0
|
90
|
-
- - <=
|
62
|
+
- - "<="
|
91
63
|
- !ruby/object:Gem::Version
|
92
64
|
version: 6.0.0
|
93
65
|
type: :runtime
|
94
66
|
prerelease: false
|
95
67
|
version_requirements: !ruby/object:Gem::Requirement
|
96
68
|
requirements:
|
97
|
-
- -
|
69
|
+
- - ">="
|
98
70
|
- !ruby/object:Gem::Version
|
99
71
|
version: 3.0.0
|
100
|
-
- - <=
|
72
|
+
- - "<="
|
101
73
|
- !ruby/object:Gem::Version
|
102
74
|
version: 6.0.0
|
103
75
|
- !ruby/object:Gem::Dependency
|
104
76
|
name: activesupport
|
105
77
|
requirement: !ruby/object:Gem::Requirement
|
106
78
|
requirements:
|
107
|
-
- -
|
79
|
+
- - ">="
|
108
80
|
- !ruby/object:Gem::Version
|
109
81
|
version: 3.0.0
|
110
|
-
- - <=
|
82
|
+
- - "<="
|
111
83
|
- !ruby/object:Gem::Version
|
112
84
|
version: 6.0.0
|
113
85
|
type: :runtime
|
114
86
|
prerelease: false
|
115
87
|
version_requirements: !ruby/object:Gem::Requirement
|
116
88
|
requirements:
|
117
|
-
- -
|
89
|
+
- - ">="
|
118
90
|
- !ruby/object:Gem::Version
|
119
91
|
version: 3.0.0
|
120
|
-
- - <=
|
92
|
+
- - "<="
|
121
93
|
- !ruby/object:Gem::Version
|
122
94
|
version: 6.0.0
|
123
95
|
- !ruby/object:Gem::Dependency
|
124
96
|
name: faraday
|
125
97
|
requirement: !ruby/object:Gem::Requirement
|
126
98
|
requirements:
|
127
|
-
- -
|
99
|
+
- - ">="
|
128
100
|
- !ruby/object:Gem::Version
|
129
101
|
version: '0.8'
|
130
|
-
- - <
|
102
|
+
- - "<"
|
131
103
|
- !ruby/object:Gem::Version
|
132
104
|
version: '1.0'
|
133
105
|
type: :runtime
|
134
106
|
prerelease: false
|
135
107
|
version_requirements: !ruby/object:Gem::Requirement
|
136
108
|
requirements:
|
137
|
-
- -
|
109
|
+
- - ">="
|
138
110
|
- !ruby/object:Gem::Version
|
139
111
|
version: '0.8'
|
140
|
-
- - <
|
112
|
+
- - "<"
|
141
113
|
- !ruby/object:Gem::Version
|
142
114
|
version: '1.0'
|
143
115
|
- !ruby/object:Gem::Dependency
|
144
116
|
name: multi_json
|
145
117
|
requirement: !ruby/object:Gem::Requirement
|
146
118
|
requirements:
|
147
|
-
- - ~>
|
119
|
+
- - "~>"
|
148
120
|
- !ruby/object:Gem::Version
|
149
121
|
version: '1.7'
|
150
122
|
type: :runtime
|
151
123
|
prerelease: false
|
152
124
|
version_requirements: !ruby/object:Gem::Requirement
|
153
125
|
requirements:
|
154
|
-
- - ~>
|
126
|
+
- - "~>"
|
155
127
|
- !ruby/object:Gem::Version
|
156
128
|
version: '1.7'
|
157
129
|
description: Her is an ORM that maps REST resources and collections to Ruby objects
|
@@ -161,10 +133,11 @@ executables: []
|
|
161
133
|
extensions: []
|
162
134
|
extra_rdoc_files: []
|
163
135
|
files:
|
164
|
-
- .gitignore
|
165
|
-
- .rspec
|
166
|
-
- .
|
167
|
-
- .
|
136
|
+
- ".gitignore"
|
137
|
+
- ".rspec"
|
138
|
+
- ".rubocop.yml"
|
139
|
+
- ".travis.yml"
|
140
|
+
- ".yardopts"
|
168
141
|
- CONTRIBUTING.md
|
169
142
|
- Gemfile
|
170
143
|
- LICENSE
|
@@ -242,17 +215,17 @@ require_paths:
|
|
242
215
|
- lib
|
243
216
|
required_ruby_version: !ruby/object:Gem::Requirement
|
244
217
|
requirements:
|
245
|
-
- -
|
218
|
+
- - ">="
|
246
219
|
- !ruby/object:Gem::Version
|
247
220
|
version: '0'
|
248
221
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
249
222
|
requirements:
|
250
|
-
- -
|
223
|
+
- - ">="
|
251
224
|
- !ruby/object:Gem::Version
|
252
225
|
version: '0'
|
253
226
|
requirements: []
|
254
227
|
rubyforge_project:
|
255
|
-
rubygems_version: 2.
|
228
|
+
rubygems_version: 2.5.1
|
256
229
|
signing_key:
|
257
230
|
specification_version: 4
|
258
231
|
summary: A simple Representational State Transfer-based Hypertext Transfer Protocol-powered
|