sugarcrm 0.9.1 → 0.9.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.
- data/Gemfile +13 -0
- data/Rakefile +24 -30
- data/VERSION +1 -1
- data/lib/sugarcrm/base.rb +1 -1
- data/lib/sugarcrm/connection/connection.rb +1 -1
- data/test/connection/test_get_server_info.rb +1 -1
- data/test/connection/test_login.rb +1 -1
- data/test/connection/test_logout.rb +2 -2
- metadata +70 -16
data/Gemfile
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
source "http://rubygems.org"
|
2
|
+
|
3
|
+
gem "activesupport", ">= 3.0.0", :require => "active_support"
|
4
|
+
gem "i18n"
|
5
|
+
|
6
|
+
# Add dependencies to develop your gem here.
|
7
|
+
# Include everything needed to run rake, tests, features, etc.
|
8
|
+
group :development do
|
9
|
+
gem "shoulda", ">= 0"
|
10
|
+
gem "bundler", "~> 1.0.0"
|
11
|
+
gem "jeweler", "~> 1.5.2"
|
12
|
+
gem "rcov", ">= 0"
|
13
|
+
end
|
data/Rakefile
CHANGED
@@ -1,23 +1,25 @@
|
|
1
1
|
require 'rubygems'
|
2
|
+
require 'bundler'
|
3
|
+
begin
|
4
|
+
Bundler.setup(:default, :development)
|
5
|
+
rescue Bundler::BundlerError => e
|
6
|
+
$stderr.puts e.message
|
7
|
+
$stderr.puts "Run `bundle install` to install missing gems"
|
8
|
+
exit e.status_code
|
9
|
+
end
|
2
10
|
require 'rake'
|
3
11
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
gem.add_development_dependency "shoulda", ">= 0"
|
14
|
-
gem.add_dependency "activesupport", ">= 3.0"
|
15
|
-
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
16
|
-
end
|
17
|
-
Jeweler::GemcutterTasks.new
|
18
|
-
rescue LoadError
|
19
|
-
puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
|
12
|
+
require 'jeweler'
|
13
|
+
Jeweler::Tasks.new do |gem|
|
14
|
+
# gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
|
15
|
+
gem.name = "sugarcrm"
|
16
|
+
gem.summary = %Q{Ruby based REST client for SugarCRM}
|
17
|
+
gem.description = %Q{A less clunky way to interact with SugarCRM via REST. Instead of SugarCRM.connection.get_entry("Users", "1") you could use SugarCRM::User.find(1). There is support for collections a la SugarCRM::User.find(1).email_addresses, or SugarCRM::Contact.first.meetings << new_meeting. ActiveRecord style finders are in place, with limited support for conditions and joins.}
|
18
|
+
gem.email = "carl.hicks@gmail.com"
|
19
|
+
gem.homepage = "http://github.com/chicks/sugarcrm"
|
20
|
+
gem.authors = ["Carl Hicks"]
|
20
21
|
end
|
22
|
+
Jeweler::RubygemsDotOrgTasks.new
|
21
23
|
|
22
24
|
require 'rake/testtask'
|
23
25
|
Rake::TestTask.new(:test) do |test|
|
@@ -26,21 +28,13 @@ Rake::TestTask.new(:test) do |test|
|
|
26
28
|
test.verbose = true
|
27
29
|
end
|
28
30
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
test.verbose = true
|
35
|
-
end
|
36
|
-
rescue LoadError
|
37
|
-
task :rcov do
|
38
|
-
abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
|
39
|
-
end
|
31
|
+
require 'rcov/rcovtask'
|
32
|
+
Rcov::RcovTask.new do |test|
|
33
|
+
test.libs << 'test'
|
34
|
+
test.pattern = 'test/**/test_*.rb'
|
35
|
+
test.verbose = true
|
40
36
|
end
|
41
37
|
|
42
|
-
task :test => :check_dependencies
|
43
|
-
|
44
38
|
task :default => :test
|
45
39
|
|
46
40
|
require 'rake/rdoctask'
|
@@ -51,4 +45,4 @@ Rake::RDocTask.new do |rdoc|
|
|
51
45
|
rdoc.title = "sugarcrm #{version}"
|
52
46
|
rdoc.rdoc_files.include('README*')
|
53
47
|
rdoc.rdoc_files.include('lib/**/*.rb')
|
54
|
-
end
|
48
|
+
end
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.9.
|
1
|
+
0.9.2
|
data/lib/sugarcrm/base.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module SugarCRM; class Base
|
2
2
|
|
3
3
|
# Unset all of the instance methods we don't need.
|
4
|
-
instance_methods.each { |m| undef_method m unless m =~ /(^__|^send$|^object_id$|^define_method$|^class$|^nil.$|^methods$|^instance_of.$|^respond_to
|
4
|
+
instance_methods.each { |m| undef_method m unless m =~ /(^__|^send$|^object_id$|^define_method$|^class$|^nil.$|^methods$|^instance_of.$|^respond_to)/ }
|
5
5
|
|
6
6
|
# This holds our connection
|
7
7
|
cattr_accessor :connection, :instance_writer => false
|
@@ -122,7 +122,7 @@ module SugarCRM; class Connection
|
|
122
122
|
# Some methods are dumb and don't return a JSON Response
|
123
123
|
return @response.body if RESPONSE_IS_NOT_JSON.include? @request.method
|
124
124
|
# Push it through the old meat grinder.
|
125
|
-
response_json = JSON.
|
125
|
+
response_json = ActiveSupport::JSON.decode(@response.body)
|
126
126
|
# Empty result. Is this wise?
|
127
127
|
return false if response_json["result_count"] == 0
|
128
128
|
# Filter debugging on REALLY BIG responses
|
@@ -6,7 +6,7 @@ class TestGetServerInfo < Test::Unit::TestCase
|
|
6
6
|
SugarCRM::Connection.new(URL, USER, PASS, {:register_modules => false})
|
7
7
|
end
|
8
8
|
should "get server info" do
|
9
|
-
|
9
|
+
assert_instance_of String, SugarCRM.connection.get_server_info["version"]
|
10
10
|
end
|
11
11
|
end
|
12
12
|
end
|
@@ -6,7 +6,7 @@ class TestLogin < Test::Unit::TestCase
|
|
6
6
|
SugarCRM::Connection.new(URL, USER, PASS, {:register_modules => false})
|
7
7
|
end
|
8
8
|
should "login and set session id" do
|
9
|
-
|
9
|
+
assert (SugarCRM.connection.session.class == String)
|
10
10
|
end
|
11
11
|
end
|
12
12
|
end
|
@@ -1,12 +1,12 @@
|
|
1
1
|
require 'helper'
|
2
2
|
|
3
|
-
class
|
3
|
+
class TestLogout < Test::Unit::TestCase
|
4
4
|
context "A SugarCRM.connection" do
|
5
5
|
setup do
|
6
6
|
SugarCRM::Connection.new(URL, USER, PASS, {:register_modules => false})
|
7
7
|
end
|
8
8
|
should "logout and not be able to login with the old session id" do
|
9
|
-
assert
|
9
|
+
assert (SugarCRM.connection.logout.class == Hash)
|
10
10
|
end
|
11
11
|
end
|
12
12
|
end
|
metadata
CHANGED
@@ -1,13 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sugarcrm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash: 57
|
5
4
|
prerelease: false
|
6
5
|
segments:
|
7
6
|
- 0
|
8
7
|
- 9
|
9
|
-
-
|
10
|
-
version: 0.9.
|
8
|
+
- 2
|
9
|
+
version: 0.9.2
|
11
10
|
platform: ruby
|
12
11
|
authors:
|
13
12
|
- Carl Hicks
|
@@ -19,35 +18,90 @@ date: 2011-01-04 00:00:00 -08:00
|
|
19
18
|
default_executable:
|
20
19
|
dependencies:
|
21
20
|
- !ruby/object:Gem::Dependency
|
22
|
-
name:
|
23
|
-
prerelease: false
|
21
|
+
name: activesupport
|
24
22
|
requirement: &id001 !ruby/object:Gem::Requirement
|
25
23
|
none: false
|
26
24
|
requirements:
|
27
25
|
- - ">="
|
28
26
|
- !ruby/object:Gem::Version
|
29
|
-
hash: 3
|
30
27
|
segments:
|
28
|
+
- 3
|
31
29
|
- 0
|
32
|
-
|
33
|
-
|
30
|
+
- 0
|
31
|
+
version: 3.0.0
|
32
|
+
type: :runtime
|
33
|
+
prerelease: false
|
34
34
|
version_requirements: *id001
|
35
35
|
- !ruby/object:Gem::Dependency
|
36
|
-
name:
|
37
|
-
prerelease: false
|
36
|
+
name: i18n
|
38
37
|
requirement: &id002 !ruby/object:Gem::Requirement
|
39
38
|
none: false
|
40
39
|
requirements:
|
41
40
|
- - ">="
|
42
41
|
- !ruby/object:Gem::Version
|
43
|
-
hash: 7
|
44
42
|
segments:
|
45
|
-
- 3
|
46
43
|
- 0
|
47
|
-
version: "
|
44
|
+
version: "0"
|
48
45
|
type: :runtime
|
46
|
+
prerelease: false
|
49
47
|
version_requirements: *id002
|
50
|
-
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
name: shoulda
|
50
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
51
|
+
none: false
|
52
|
+
requirements:
|
53
|
+
- - ">="
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
segments:
|
56
|
+
- 0
|
57
|
+
version: "0"
|
58
|
+
type: :development
|
59
|
+
prerelease: false
|
60
|
+
version_requirements: *id003
|
61
|
+
- !ruby/object:Gem::Dependency
|
62
|
+
name: bundler
|
63
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
64
|
+
none: false
|
65
|
+
requirements:
|
66
|
+
- - ~>
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
segments:
|
69
|
+
- 1
|
70
|
+
- 0
|
71
|
+
- 0
|
72
|
+
version: 1.0.0
|
73
|
+
type: :development
|
74
|
+
prerelease: false
|
75
|
+
version_requirements: *id004
|
76
|
+
- !ruby/object:Gem::Dependency
|
77
|
+
name: jeweler
|
78
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
79
|
+
none: false
|
80
|
+
requirements:
|
81
|
+
- - ~>
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
segments:
|
84
|
+
- 1
|
85
|
+
- 5
|
86
|
+
- 2
|
87
|
+
version: 1.5.2
|
88
|
+
type: :development
|
89
|
+
prerelease: false
|
90
|
+
version_requirements: *id005
|
91
|
+
- !ruby/object:Gem::Dependency
|
92
|
+
name: rcov
|
93
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
94
|
+
none: false
|
95
|
+
requirements:
|
96
|
+
- - ">="
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
segments:
|
99
|
+
- 0
|
100
|
+
version: "0"
|
101
|
+
type: :development
|
102
|
+
prerelease: false
|
103
|
+
version_requirements: *id006
|
104
|
+
description: A less clunky way to interact with SugarCRM via REST. Instead of SugarCRM.connection.get_entry("Users", "1") you could use SugarCRM::User.find(1). There is support for collections a la SugarCRM::User.find(1).email_addresses, or SugarCRM::Contact.first.meetings << new_meeting. ActiveRecord style finders are in place, with limited support for conditions and joins.
|
51
105
|
email: carl.hicks@gmail.com
|
52
106
|
executables: []
|
53
107
|
|
@@ -58,6 +112,7 @@ extra_rdoc_files:
|
|
58
112
|
- README.rdoc
|
59
113
|
files:
|
60
114
|
- .document
|
115
|
+
- Gemfile
|
61
116
|
- LICENSE
|
62
117
|
- README.rdoc
|
63
118
|
- Rakefile
|
@@ -138,7 +193,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
138
193
|
requirements:
|
139
194
|
- - ">="
|
140
195
|
- !ruby/object:Gem::Version
|
141
|
-
hash:
|
196
|
+
hash: 2866682332345860933
|
142
197
|
segments:
|
143
198
|
- 0
|
144
199
|
version: "0"
|
@@ -147,7 +202,6 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
147
202
|
requirements:
|
148
203
|
- - ">="
|
149
204
|
- !ruby/object:Gem::Version
|
150
|
-
hash: 3
|
151
205
|
segments:
|
152
206
|
- 0
|
153
207
|
version: "0"
|