activerequest 0.1.1 → 0.1.2

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: ac83cebb3fb2d47f4364bbf316cf217b79bb238f
4
- data.tar.gz: 508dfb2390af865cdbd9619ca7bdd7800073b9ec
3
+ metadata.gz: 990a7797574f080962dcc91833fbe8c79cf4061d
4
+ data.tar.gz: 8a05f525a754236b8a9dcf7c1ee99c196c7ff2da
5
5
  SHA512:
6
- metadata.gz: bfb9e47749ba3d5753ea0f3b4b77c5f90e1af9781a4f495e8eb09ca8912caa0a50ee1276a37c29ddd5bcfcdc717913bdfad28227fde77992102fe9614c74cc02
7
- data.tar.gz: de8ba12c46bbab1aa4c17926d63dd51a227b173332a72514e650fd4a135397bb685eef1975edd733ca9597034f6262f633bfcd74fff2b882c1feb8c964ac928b
6
+ metadata.gz: 1cb8320e5214fcd218246ee011be1e17c8dc8bb2502857ed93a88959503794c645e5d80eee0b1f107a20e0dccc1f17fbb4efc1a97e9ac8276822e8407405c9b9
7
+ data.tar.gz: 85a4d89439b6958152ed3ff197cf1d1dbe0ec07ab74cce47a96c3f625f75f58ef83a1a96978b73f8b53c60e5a23dae772439a85869ab8963a8a8da5b6904912e
data/Gemfile CHANGED
@@ -1,4 +1,5 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in activerequest.gemspec
4
+ gem 'codecov', require: false, group: :test
4
5
  gemspec
data/README.md CHANGED
@@ -1,8 +1,12 @@
1
1
  # Activerequest
2
2
 
3
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/active_request`. To experiment with that code, run `bin/console` for an interactive prompt.
3
+ Active Request is a gem to help monolithic projects turn into micro services.
4
4
 
5
- TODO: Delete this and the text above, and describe your gem
5
+ [![Gem Version](https://badge.fury.io/rb/activerequest.svg)](https://badge.fury.io/rb/activerequest)
6
+ [![Build Status](https://travis-ci.org/xptavares/activerequest.png)](https://travis-ci.org/xptavares/activerequest)
7
+ [![codecov](https://codecov.io/gh/xptavares/activerequest/branch/master/graph/badge.svg)](https://codecov.io/gh/xptavares/activerequest)
8
+ [![Code Climate](https://codeclimate.com/github/xptavares/activerequest/badges/gpa.svg)](https://codeclimate.com/github/xptavares/activerequest)
9
+ [![Issue Count](https://codeclimate.com/github/xptavares/activerequest/badges/issue_count.svg)](https://codeclimate.com/github/xptavares/activerequest)
6
10
 
7
11
  ## Installation
8
12
 
data/Rakefile CHANGED
@@ -7,4 +7,10 @@ Rake::TestTask.new(:test) do |t|
7
7
  t.test_files = FileList['test/**/*_test.rb']
8
8
  end
9
9
 
10
- task :default => :spec
10
+ task default: :test
11
+
12
+ desc 'Generates a coverage report'
13
+ task :coverage do
14
+ ENV['COVERAGE'] = 'true'
15
+ Rake::Task['test'].execute
16
+ end
@@ -9,8 +9,8 @@ Gem::Specification.new do |spec|
9
9
  spec.authors = ["Alexandre Tavares"]
10
10
  spec.email = ["xptavares@gmail.com"]
11
11
 
12
- spec.summary = %q{Like ActiveRecord but from request}
13
- spec.description = %q{Like ActiveRecord but from request}
12
+ spec.summary = "ActiveRequest is a gem to help monolithic projects turn into micro services."
13
+ spec.description = "ActiveRequest is a gem to help monolithic projects turn into micro services."
14
14
  spec.homepage = "http://rubygems.org/gems/activerequest"
15
15
  spec.license = "MIT"
16
16
 
@@ -24,7 +24,9 @@ Gem::Specification.new do |spec|
24
24
 
25
25
  spec.add_development_dependency "bundler", "~> 1.11"
26
26
  spec.add_development_dependency "rake", "~> 10.0"
27
+ spec.add_development_dependency "webmock", "~> 2.1.0"
27
28
  spec.add_development_dependency "minitest", "~> 5.0"
28
29
  spec.add_development_dependency 'mocha', '~> 1.1'
29
30
  spec.add_development_dependency "minitest-vcr", "~> 1.4.0"
31
+ spec.add_development_dependency 'multi_json', '~> 1.0'
30
32
  end
@@ -69,7 +69,7 @@ end
69
69
  #### has many
70
70
 
71
71
  ```ruby
72
- blog = Blog.first
72
+ blog = Blog.find 1
73
73
  => #<Blog:0x0056334e564ed8 @id=1, @title="title 1", @posts=[]>
74
74
  blog.posts # "GET /v1/blogs/1/posts.json HTTP/1.1" 200
75
75
  => [#<Post:0x0056334e554240 @id=1, @title="title 1", @body="body 1", @blog=nil>, #<Post:0x0056334e5537a0 @id=2, @title="title 2", @body="body 2", @blog=nil>]
@@ -28,12 +28,15 @@ end
28
28
 
29
29
  post '/v1/blogs.json' do
30
30
  status 201
31
- json blog: { id: rand(1..9999) }
31
+ return json(blog: { id: rand(1..9999) }) if params["blog"]["title"]
32
+ status 422
33
+ json(errors: { title: ["obrigatório"] }, full_error_messages: "Title obrigatório")
32
34
  end
33
35
 
34
36
  put '/v1/blogs/:id.json' do
35
- id = params[:id]
36
- json blog: { id: id.to_i }
37
+ return json(blog: { id: params[:id].to_i }) if params["blog"]["title"]
38
+ status 422
39
+ json(errors: { title: ["obrigatório"] }, full_error_messages: "Title obrigatório")
37
40
  end
38
41
 
39
42
  delete '/v1/blogs/:id.json' do
@@ -0,0 +1,6 @@
1
+ dir = File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+ require File.join(dir, 'active_request')
3
+
4
+ class User < ActiveRequest::Base
5
+ attr_accessor :id, :name
6
+ end
@@ -23,7 +23,7 @@ module ActiveRequest
23
23
  end
24
24
 
25
25
  def self.model_name
26
- name.underscore.pluralize
26
+ name.underscore
27
27
  end
28
28
 
29
29
  def self.new(*args, &blk)
@@ -23,14 +23,19 @@ module ActiveRequest
23
23
  if id && variable.blank?
24
24
  father_ojb = Object.const_get(many[:class_name])
25
25
  father_model_name = father_ojb.model_name.pluralize
26
+ self_model_name = self.class.model_name
26
27
  self.class.base_uri("#{ActiveRequest.configuration.uri}/#{ActiveRequest.configuration.api_version}/")
27
- response = self.class.get("/#{self.class.model_name.pluralize}/#{id}/#{father_model_name}.json", headers: self.class.headers)
28
+ response = self.class.get("/#{self_model_name.pluralize}/#{id}/#{father_model_name}.json", headers: self.class.headers)
28
29
  return [] unless 200 == response.code
29
30
  body = JSON.parse(response.body)
30
31
  # TODO era para ser assim mesmo?
31
- children = body["#{self.class.model_name}/#{father_model_name}"].map { |params| father_ojb.new(params) }
32
- send("#{many[:association]}=", children)
33
- variable = children
32
+ childrens = body["#{self_model_name}/#{father_model_name}"].map { |params| father_ojb.new(params) }
33
+ childrens.each do |ch|
34
+ ch.instance_variable_set("@#{self_model_name}", self)
35
+ ch.instance_variable_set("@#{self_model_name}_id", self.id)
36
+ end
37
+ send("#{many[:association]}=", childrens)
38
+ variable = childrens
34
39
  end
35
40
  variable
36
41
  end
@@ -94,7 +94,7 @@ module ActiveRequest
94
94
  def query
95
95
  many_atts = query_for_manys.reduce(:merge)
96
96
  local_atts = attributes.map { |att| add_key_value(att, send(att)) }.reject(&:blank?).reduce(:merge)
97
- { self.class.model_name => local_atts.merge(many_atts) }
97
+ { self.class.model_name => local_atts ? local_atts.merge(many_atts) : many_atts }
98
98
  end
99
99
 
100
100
  def query_for_manys
@@ -1,3 +1,3 @@
1
1
  module ActiveRequest
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activerequest
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexandre Tavares
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '10.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: webmock
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 2.1.0
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 2.1.0
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: minitest
71
85
  requirement: !ruby/object:Gem::Requirement
@@ -108,7 +122,21 @@ dependencies:
108
122
  - - "~>"
109
123
  - !ruby/object:Gem::Version
110
124
  version: 1.4.0
111
- description: Like ActiveRecord but from request
125
+ - !ruby/object:Gem::Dependency
126
+ name: multi_json
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '1.0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '1.0'
139
+ description: ActiveRequest is a gem to help monolithic projects turn into micro services.
112
140
  email:
113
141
  - xptavares@gmail.com
114
142
  executables: []
@@ -129,6 +157,7 @@ files:
129
157
  - examples/config.rb
130
158
  - examples/post.rb
131
159
  - examples/sinatra/app.rb
160
+ - examples/user.rb
132
161
  - lib/active_request.rb
133
162
  - lib/active_request/attributes.rb
134
163
  - lib/active_request/base.rb
@@ -161,6 +190,6 @@ rubyforge_project:
161
190
  rubygems_version: 2.4.5
162
191
  signing_key:
163
192
  specification_version: 4
164
- summary: Like ActiveRecord but from request
193
+ summary: ActiveRequest is a gem to help monolithic projects turn into micro services.
165
194
  test_files: []
166
195
  has_rdoc: