activerequest 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
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: