rhoconnect 3.0.0.beta1 → 3.0.0.beta3
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/CHANGELOG +16 -2
- data/Gemfile +14 -5
- data/Gemfile.lock +13 -23
- data/Rakefile +86 -0
- data/bench/bench_runner.rb +5 -4
- data/bench/benchapp/Gemfile +17 -8
- data/bench/blobapp/Gemfile +13 -14
- data/doc/adapters-crm.txt +226 -0
- data/doc/adapters-intro.txt +18 -0
- data/doc/client.txt +29 -2
- data/doc/heroku-addon.txt +54 -0
- data/doc/install.txt +1 -2
- data/doc/migration.txt +18 -6
- data/doc/net-plugin.txt +276 -0
- data/doc/plugin-intro.txt +6 -0
- data/doc/push.txt +1 -1
- data/doc/rails-plugin.txt +116 -0
- data/doc/rest-api.txt +2 -2
- data/doc/settings.txt +59 -0
- data/doc/tutorial.txt +8 -5
- data/generators/rhoconnect.rb +30 -0
- data/generators/templates/application/Gemfile +16 -7
- data/generators/templates/application/gitignore +4 -0
- data/install.sh +74 -106
- data/installer/deb-scripts/LICENSE +75 -0
- data/installer/deb-scripts/install.sh +300 -0
- data/installer/deb-scripts/scripts/rho_connect_install_constants.rb +32 -0
- data/installer/deb-scripts/scripts/rho_connect_install_installers.rb +103 -0
- data/installer/deb-scripts/scripts/rho_connect_install_utilities.rb +110 -0
- data/installer/deb-scripts/scripts/rhoinstaller.rb +55 -0
- data/installer/deb-scripts/utils/README +67 -0
- data/installer/deb-scripts/utils/create_texts.rb +76 -0
- data/installer/deb-scripts/utils/redis_init_script +124 -0
- data/installer/deb-scripts/utils/redis_log_rotate +8 -0
- data/installer/unix-like/install.sh +361 -0
- data/installer/unix-like/post-install.sh +8 -0
- data/installer/unix-like/pre-install.sh +8 -0
- data/installer/unix-like/rho_connect_install_constants.rb +9 -14
- data/installer/unix-like/rho_connect_install_debian.rb +7 -5
- data/installer/unix-like/rho_connect_install_dnd.rb +6 -6
- data/installer/unix-like/rho_connect_install_get_params.rb +1 -1
- data/installer/unix-like/rho_connect_install_installers.rb +39 -38
- data/installer/unix-like/rho_connect_install_utilities.rb +9 -10
- data/installer/unix-like/rho_connect_install_yum.rb +6 -5
- data/installer/unix-like/rhoinstaller.rb +8 -3
- data/installer/utils/create_texts.rb +313 -85
- data/installer/windows/rhosync.nsi +5 -5
- data/lib/rhoconnect/api/application/clientcreate.rb +1 -1
- data/lib/rhoconnect/api/application/clientregister.rb +1 -1
- data/lib/rhoconnect/api/application/clientreset.rb +1 -1
- data/lib/rhoconnect/client.rb +0 -1
- data/lib/rhoconnect/client_sync.rb +1 -0
- data/lib/rhoconnect/console/app/routes/home.rb +1 -1
- data/lib/rhoconnect/console/app/routes/user.rb +8 -3
- data/lib/rhoconnect/console/app/views/adapter.erb +2 -2
- data/lib/rhoconnect/console/app/views/ping.erb +14 -2
- data/lib/rhoconnect/console/app/views/users.erb +8 -1
- data/lib/rhoconnect/jobs/ping_job.rb +11 -3
- data/lib/rhoconnect/model.rb +2 -2
- data/lib/rhoconnect/read_state.rb +2 -0
- data/lib/rhoconnect/server.rb +4 -3
- data/lib/rhoconnect/source.rb +33 -6
- data/lib/rhoconnect/source_adapter.rb +5 -9
- data/lib/rhoconnect/source_sync.rb +11 -5
- data/lib/rhoconnect/store.rb +7 -4
- data/lib/rhoconnect/tasks.rb +3 -3
- data/lib/rhoconnect/version.rb +1 -1
- data/lib/rhoconnect.rb +22 -8
- data/rhoconnect.gemspec +4 -22
- data/spec/api/application/rhoconnect_api_spec.rb +54 -8
- data/spec/api/source/get_source_params_spec.rb +2 -1
- data/spec/api/source/list_sources_spec.rb +3 -3
- data/spec/app_spec.rb +8 -1
- data/spec/apps/rhotestapp/settings/settings.yml +10 -5
- data/spec/apps/rhotestapp/sources/other_adapter.rb +7 -0
- data/spec/client_sync_spec.rb +5 -8
- data/spec/dynamic_adapter_spec.rb +8 -8
- data/spec/generator/generator_spec.rb +4 -2
- data/spec/jobs/ping_job_spec.rb +53 -0
- data/spec/model_spec.rb +2 -2
- data/spec/rhosync_spec.rb +1 -1
- data/spec/server/server_spec.rb +3 -14
- data/spec/source_sync_spec.rb +84 -2
- data/spec/support/shared_examples.rb +2 -2
- data/tasks/redis.rake +2 -2
- metadata +30 -41
- data/spec/api/rhosync_api_spec.rb.orig +0 -606
data/CHANGELOG
CHANGED
@@ -1,4 +1,12 @@
|
|
1
|
-
## 3.0.0 (not released)
|
1
|
+
## 3.0.0.beta3 (not released)
|
2
|
+
|
3
|
+
|
4
|
+
## 3.0.0.beta2 (2011-09-14)
|
5
|
+
* #17830175 - moved SystemTimer in application's Gemfile so rhoconnect gem isn't specific
|
6
|
+
* #13303895 - Generating a new source with 'rhosync source <name>' deletes sections in settings.yml
|
7
|
+
* #10313437 - support source settings per environment
|
8
|
+
|
9
|
+
## 3.0.0.beta1 (2011-09-01)
|
2
10
|
* #1018 user delete now iterates through user sources and deletes data in redis
|
3
11
|
* #11102931 ping api accepts vibrate string and int
|
4
12
|
* #7197617 test spec helpers support pass through
|
@@ -10,7 +18,7 @@
|
|
10
18
|
* #12105115 - removed unnecessary log4r dependency
|
11
19
|
* added bundler to manage gem's dependencies, migrated from rspec1 to rspec2
|
12
20
|
* #5687948 - fixed issue "iPhone push specs failed"
|
13
|
-
* use redis 2.2.
|
21
|
+
* use redis 2.2.13 by default
|
14
22
|
* added SystemTimer gem dependency (used only on posix systems)
|
15
23
|
* #13616807 - Rake task spec:all fails for enterprise ruby (ree)
|
16
24
|
* #13776713 - Rake -v 0.9.0 breaks rhosync rake tasks
|
@@ -35,6 +43,12 @@
|
|
35
43
|
* #14286249 - jruby WAR file deployed , some of the links are broken in console window, should use the relative paths
|
36
44
|
* #14285867 - jruby rhosync:start should have run with dtach
|
37
45
|
* #17526603 - implement clientreset support for specified sources
|
46
|
+
* #16628143 - implement 'ping' for multiple users at once in REST API
|
47
|
+
* #18003071 - enhancing console to support multi-user ping
|
48
|
+
* #10313437 - source settings per environment (also applied to dynamic adapters)
|
49
|
+
* #18356697 - store lock is never released (bug fix)
|
50
|
+
* #18672811 - edge case produces race condition which leads to corruption of Store data
|
51
|
+
* #18508155 - on failed syncs allow the user to retry it up to pre-defined number of times
|
38
52
|
|
39
53
|
## 2.1.10 (2011-08-17)
|
40
54
|
* #16001227 - raise exceptions on c2dm errors
|
data/Gemfile
CHANGED
@@ -4,15 +4,24 @@ source "http://rubygems.org"
|
|
4
4
|
gemspec
|
5
5
|
|
6
6
|
platforms :jruby do
|
7
|
-
gem '
|
7
|
+
gem 'jdbc-sqlite3', ">= 3.7.2"
|
8
|
+
gem 'dbi', ">= 0.4.5"
|
9
|
+
gem 'dbd-jdbc', ">= 0.1.4"
|
10
|
+
gem 'jruby-openssl', ">= 0.7.4"
|
8
11
|
gem 'warbler'
|
9
12
|
end
|
10
13
|
|
14
|
+
gem 'sqlite3', ">= 1.3.3", :platforms => [:ruby, :mswin, :mingw]
|
15
|
+
|
11
16
|
group :development do
|
12
|
-
gem '
|
13
|
-
gem 'rcov', '>= 0.9.8'
|
17
|
+
gem 'fpm', '>= 0.3.8'
|
14
18
|
gem 'ffaker', '~> 1.8.0'
|
15
|
-
gem 'rack-test', '>= 0.5.3', :require => 'rack/test'
|
16
19
|
gem 'thor', '>= 0.13.6'
|
17
20
|
gem 'webmock', '~> 1.6.4'
|
18
|
-
end
|
21
|
+
end
|
22
|
+
|
23
|
+
group :test do
|
24
|
+
gem 'rspec', '~> 2.6.0'
|
25
|
+
gem 'rcov', '>= 0.9.8'
|
26
|
+
gem 'rack-test', '>= 0.5.3', :require => 'rack/test'
|
27
|
+
end
|
data/Gemfile.lock
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
rhoconnect (3.0.0.
|
5
|
-
SystemTimer (~> 1.2.3)
|
4
|
+
rhoconnect (3.0.0.beta3)
|
6
5
|
bundler (~> 1.0)
|
7
6
|
json (~> 1.5.0)
|
8
7
|
rake (= 0.9.2)
|
@@ -11,36 +10,32 @@ PATH
|
|
11
10
|
rest-client (~> 1.6.1)
|
12
11
|
rubyzip (~> 0.9.4)
|
13
12
|
sinatra (~> 1.2)
|
14
|
-
sqlite3 (>= 1.3.3)
|
15
13
|
templater (~> 1.0.0)
|
16
14
|
uuidtools (>= 2.1.1)
|
17
15
|
|
18
16
|
GEM
|
19
17
|
remote: http://rubygems.org/
|
20
18
|
specs:
|
21
|
-
SystemTimer (1.2.3)
|
22
19
|
addressable (2.2.6)
|
23
|
-
crack (0.1
|
20
|
+
crack (0.3.1)
|
24
21
|
diff-lcs (1.1.3)
|
25
22
|
extlib (0.9.15)
|
26
|
-
ffaker (1.8.
|
23
|
+
ffaker (1.8.1)
|
24
|
+
fpm (0.3.9)
|
25
|
+
json
|
27
26
|
highline (1.6.2)
|
28
|
-
jruby-jars (1.6.4)
|
29
|
-
jruby-rack (1.0.10)
|
30
27
|
json (1.5.4)
|
31
|
-
json (1.5.4-java)
|
32
28
|
mime-types (1.16)
|
33
|
-
rack (1.3.
|
29
|
+
rack (1.3.3)
|
34
30
|
rack-test (0.6.1)
|
35
31
|
rack (>= 1.0)
|
36
32
|
rake (0.9.2)
|
37
33
|
rcov (0.9.10)
|
38
|
-
rcov (0.9.10-java)
|
39
34
|
redis (2.2.2)
|
40
35
|
redis-namespace (1.0.3)
|
41
36
|
redis (< 3.0.0)
|
42
37
|
resque (1.17.1)
|
43
|
-
json (
|
38
|
+
json (< 1.6, >= 1.4.6)
|
44
39
|
redis-namespace (~> 1.0.2)
|
45
40
|
sinatra (>= 0.9.2)
|
46
41
|
vegas (~> 0.1.2)
|
@@ -65,33 +60,28 @@ GEM
|
|
65
60
|
highline (>= 1.4.0)
|
66
61
|
thor (0.14.6)
|
67
62
|
tilt (1.3.3)
|
68
|
-
trinidad (1.2.3)
|
69
|
-
jruby-rack (>= 1.0.9)
|
70
|
-
trinidad_jars (>= 1.0.1)
|
71
|
-
trinidad_jars (1.0.1)
|
72
63
|
uuidtools (2.1.2)
|
73
64
|
vegas (0.1.8)
|
74
65
|
rack (>= 1.0.0)
|
75
|
-
warbler (1.3.2)
|
76
|
-
jruby-jars (>= 1.4.0)
|
77
|
-
jruby-rack (>= 1.0.0)
|
78
|
-
rake (>= 0.8.7)
|
79
|
-
rubyzip (>= 0.9.4)
|
80
66
|
webmock (1.6.4)
|
81
67
|
addressable (> 2.2.5, ~> 2.2)
|
82
68
|
crack (>= 0.1.7)
|
83
69
|
|
84
70
|
PLATFORMS
|
85
|
-
java
|
86
71
|
ruby
|
87
72
|
|
88
73
|
DEPENDENCIES
|
74
|
+
dbd-jdbc (>= 0.1.4)
|
75
|
+
dbi (>= 0.4.5)
|
89
76
|
ffaker (~> 1.8.0)
|
77
|
+
fpm (>= 0.3.8)
|
78
|
+
jdbc-sqlite3 (>= 3.7.2)
|
79
|
+
jruby-openssl (>= 0.7.4)
|
90
80
|
rack-test (>= 0.5.3)
|
91
81
|
rcov (>= 0.9.8)
|
92
82
|
rhoconnect!
|
93
83
|
rspec (~> 2.6.0)
|
84
|
+
sqlite3 (>= 1.3.3)
|
94
85
|
thor (>= 0.13.6)
|
95
|
-
trinidad
|
96
86
|
warbler
|
97
87
|
webmock (~> 1.6.4)
|
data/Rakefile
CHANGED
@@ -80,3 +80,89 @@ def ask(msg)
|
|
80
80
|
end
|
81
81
|
|
82
82
|
Bundler::GemHelper.install_tasks
|
83
|
+
|
84
|
+
require 'rhoconnect/version'
|
85
|
+
|
86
|
+
desc "Build archive rhoconnect-#{Rhoconnect::VERSION}.tar.gz into the pkg directory"
|
87
|
+
task :archive do
|
88
|
+
`mkdir -p pkg`
|
89
|
+
`git archive --format=tar --prefix=rhoconnect-#{Rhoconnect::VERSION}/ HEAD | gzip > pkg/rhoconnect-#{Rhoconnect::VERSION}.tar.gz`
|
90
|
+
end
|
91
|
+
|
92
|
+
# Debian and RPM package building tasks
|
93
|
+
|
94
|
+
version = Rhoconnect::VERSION
|
95
|
+
|
96
|
+
def create_post_install(version)
|
97
|
+
post_install = "#!/bin/sh
|
98
|
+
VERSION=#{version}
|
99
|
+
|
100
|
+
cd /tmp/installdir/rhoconnect-$VERSION
|
101
|
+
./install.sh -v $VERSION
|
102
|
+
|
103
|
+
echo \"Delete tmp files ...\"
|
104
|
+
rm -rf /tmp/installdir
|
105
|
+
end #create_Post_install"
|
106
|
+
|
107
|
+
post_install
|
108
|
+
end #create_post_install
|
109
|
+
|
110
|
+
def build_pkg(dist, arch, deps)
|
111
|
+
curr_dir = `pwd`.strip
|
112
|
+
workspace = "#{curr_dir}/pkg/workspace"
|
113
|
+
version = Rhoconnect::VERSION
|
114
|
+
description = '"Rhoconnect production environment"'
|
115
|
+
post_install = "#{workspace}/unix-like/post-install.sh"
|
116
|
+
prefix = "/tmp/installdir/rhoconnect-#{version}"
|
117
|
+
gem_name = "rhoconnect-#{version}.gem"
|
118
|
+
post_install = create_post_install version
|
119
|
+
post_install_script = "#{workspace}/unix-like/post-install.sh"
|
120
|
+
|
121
|
+
Dir.mkdir("#{workspace}")
|
122
|
+
Dir.mkdir("#{workspace}/unix-like")
|
123
|
+
Dir.mkdir("#{workspace}/utils")
|
124
|
+
|
125
|
+
# Turn post_install string into a bash script file and place it in the workspace.
|
126
|
+
post_install_file = File.new("#{post_install_script}", "w")
|
127
|
+
post_install_file.write(post_install)
|
128
|
+
post_install_file.close
|
129
|
+
|
130
|
+
# Copy all necessary Files into the workspace
|
131
|
+
system("cp ./install.sh #{workspace}")
|
132
|
+
system("cp -r ./installer/unix-like/* #{workspace}/unix-like")
|
133
|
+
system("cp -r ./installer/utils/* #{workspace}/utils")
|
134
|
+
system("cp ./pkg/#{gem_name} #{workspace}")
|
135
|
+
|
136
|
+
# cd into the pkg dir so that fpm will create the package into the pkg dir.
|
137
|
+
Dir.chdir("./pkg")
|
138
|
+
|
139
|
+
# Construct fpm command
|
140
|
+
fpm_cmd = "fpm -s dir -t #{dist} -n rhoconnect -v #{version} -a #{arch} " +
|
141
|
+
"-C #{workspace} --post-install #{post_install_script} --prefix #{prefix} " +
|
142
|
+
"--description #{description}"
|
143
|
+
|
144
|
+
# Add the list of dependencies to the fpm call
|
145
|
+
deps.each do |dep|
|
146
|
+
fpm_cmd << " -d #{dep}"
|
147
|
+
end #do
|
148
|
+
|
149
|
+
# Create the package
|
150
|
+
system(fpm_cmd)
|
151
|
+
|
152
|
+
# Leave no trace...
|
153
|
+
system("rm -rf #{workspace}")
|
154
|
+
end #build_pkg
|
155
|
+
|
156
|
+
task "build:deb" => :build do
|
157
|
+
deps = ['build-essential', 'zlib1g-dev','libssl-dev', 'libreadline5-dev',
|
158
|
+
'libcurl4-openssl-dev', 'libsqlite3-0']
|
159
|
+
|
160
|
+
build_pkg "deb", "all", deps
|
161
|
+
end #build:deb
|
162
|
+
|
163
|
+
task "build:rpm" => :build do
|
164
|
+
deps = ['gcc-c++', 'zlib-devel', 'openssl-devel', 'readline-devel', 'curl-devel',
|
165
|
+
'pcre-devel']
|
166
|
+
|
167
|
+
build_pkg "rpm", "noarch", deps
|
168
|
+
end #build:rpm
|
data/bench/bench_runner.rb
CHANGED
@@ -17,10 +17,11 @@ begin
|
|
17
17
|
puts `bundle update`
|
18
18
|
puts
|
19
19
|
|
20
|
-
|
21
|
-
puts
|
22
|
-
puts
|
23
|
-
|
20
|
+
# Skip the following lines because becnchapp Gemfile uses path to rhoconnect code
|
21
|
+
# puts "Installing rhoconnect ..."
|
22
|
+
# puts `rake install`
|
23
|
+
# puts
|
24
|
+
|
24
25
|
Dir.chdir "bench/benchapp" #puts Dir.pwd
|
25
26
|
puts "Checking bench application dependencies ..."
|
26
27
|
puts `bundle update`
|
data/bench/benchapp/Gemfile
CHANGED
@@ -1,17 +1,26 @@
|
|
1
1
|
source 'http://rubygems.org'
|
2
2
|
|
3
|
-
gem 'rhoconnect', '
|
3
|
+
gem 'rhoconnect', :path => '../../'
|
4
4
|
|
5
|
-
|
5
|
+
# Helps with some of the limitations of green threads, not needed in ruby 1.9.x
|
6
|
+
gem 'SystemTimer', '~> 1.2.3', :platforms => :ruby_18
|
7
|
+
|
8
|
+
platforms :jruby do
|
9
|
+
gem 'jdbc-sqlite3', ">= 3.7.2"
|
10
|
+
gem 'dbi', ">= 0.4.5"
|
11
|
+
gem 'dbd-jdbc', ">= 0.1.4"
|
12
|
+
gem 'jruby-openssl', ">= 0.7.4"
|
13
|
+
gem 'warbler'
|
14
|
+
end
|
15
|
+
|
16
|
+
gem 'sqlite3', ">= 1.3.3", :platforms => [:ruby, :mswin, :mingw]
|
17
|
+
|
18
|
+
# For jruby trinidad JRuby web server is used
|
19
|
+
gem 'trinidad', :platforms => :jruby
|
6
20
|
|
7
21
|
group :development do
|
8
22
|
# By default to run application thin web server is used
|
9
|
-
gem 'thin', :platforms => :ruby
|
10
|
-
|
11
|
-
# For jruby trinidad JRuby web server is used
|
12
|
-
gem 'trinidad', :platforms => :jruby
|
13
|
-
# Alternative for jruby
|
14
|
-
# gem 'jetty-rackup', :platforms => :jruby
|
23
|
+
gem 'thin', :platforms => [:ruby, :mswin, :mingw]
|
15
24
|
end
|
16
25
|
|
17
26
|
group :test do
|
data/bench/blobapp/Gemfile
CHANGED
@@ -1,27 +1,26 @@
|
|
1
1
|
source 'http://rubygems.org'
|
2
2
|
|
3
|
-
gem 'rhoconnect',
|
3
|
+
gem 'rhoconnect', :path => '../../'
|
4
|
+
|
5
|
+
# Helps with some of the limitations of green threads, not needed in ruby 1.9.x
|
6
|
+
gem 'SystemTimer', '~> 1.2.3', :platforms => :ruby_18
|
4
7
|
|
5
8
|
platforms :jruby do
|
6
|
-
gem 'jdbc-sqlite3',
|
7
|
-
gem 'dbi'
|
8
|
-
gem 'dbd-jdbc',
|
9
|
-
gem 'jruby-openssl'
|
9
|
+
gem 'jdbc-sqlite3', ">= 3.7.2"
|
10
|
+
gem 'dbi', ">= 0.4.5"
|
11
|
+
gem 'dbd-jdbc', ">= 0.1.4"
|
12
|
+
gem 'jruby-openssl', ">= 0.7.4"
|
10
13
|
gem 'warbler'
|
11
14
|
end
|
12
15
|
|
13
|
-
platforms :ruby
|
14
|
-
|
15
|
-
|
16
|
+
gem 'sqlite3', ">= 1.3.3", :platforms => [:ruby, :mswin, :mingw]
|
17
|
+
|
18
|
+
# For jruby trinidad JRuby web server is used
|
19
|
+
gem 'trinidad', :platforms => :jruby
|
16
20
|
|
17
21
|
group :development do
|
18
22
|
# By default to run application thin web server is used
|
19
|
-
gem 'thin',
|
20
|
-
|
21
|
-
# For jruby trinidad JRuby web server is used
|
22
|
-
gem 'trinidad', :platforms => :jruby
|
23
|
-
# Alternative for jruby
|
24
|
-
# gem 'jetty-rackup', :platforms => :jruby
|
23
|
+
gem 'thin', :platforms => [:ruby, :mswin, :mingw]
|
25
24
|
end
|
26
25
|
|
27
26
|
group :test do
|
@@ -0,0 +1,226 @@
|
|
1
|
+
CRM adapters
|
2
|
+
===
|
3
|
+
|
4
|
+
With rhoconnect-adapters, you can utilize the pre-built set of [RhoConnect](http://rhomobile.com/products/rhoconnect/) applications
|
5
|
+
for popular CRM backends (SalesForce, Oracle CRM On Demand, Sugar CRM, etc.). Also, this library includes support for writing your own [RhoConnect](http://rhomobile.com/products/rhoconnect/)
|
6
|
+
CRM applications to extend or customize the default functionality.
|
7
|
+
|
8
|
+
### Generating Standard CRM Application
|
9
|
+
|
10
|
+
To create a standard out-of-the-box rhoconnect CRM application use the following command:
|
11
|
+
|
12
|
+
$ rhoconnect-adapters crmapp <app_name> <CRM-backend>
|
13
|
+
|
14
|
+
Here, the \<CRM\-backend\> parameter specifies the CRM backend that your application will use.
|
15
|
+
Currently, the following CRM backends are supported:
|
16
|
+
|
17
|
+
- OracleOnDemand (for [Oracle CRM On Demand](http://crmondemand.oracle.com))
|
18
|
+
- MsDynamics (for [Microsoft Dynamics CRM](http://www.microsoft.com/en-us/dynamics/default.aspx))
|
19
|
+
- Salesforce (for [Salesforce CRM](http://www.salesforce.com/))
|
20
|
+
- Sugar (for [Sugar CRM](http://www.sugarcrm.com/crm/))
|
21
|
+
|
22
|
+
The generated Rhoconnect CRM application structure will include typical [RhoConnect](http://rhomobile.com/products/rhoconnect/)
|
23
|
+
files (for example, application.rb and settings.yml). It will also create a special vendor directory `vendor/\<CRM\-backend\>`
|
24
|
+
containing all support files specific for the corresponding CRM backend.
|
25
|
+
|
26
|
+
By default, the Rhoconnect CRM application will be generated with four standard source adapters corresponding
|
27
|
+
to the following CRM objects:
|
28
|
+
|
29
|
+
- Account
|
30
|
+
- Contact
|
31
|
+
- Lead
|
32
|
+
- Opportunity
|
33
|
+
|
34
|
+
|
35
|
+
### Generating CRM Application without pre-built source adapters
|
36
|
+
|
37
|
+
In some cases, it is necessary to generate an application without any standard sources.
|
38
|
+
For this purpose, use the `--bare` option to generate just the application's skeleton.
|
39
|
+
|
40
|
+
rhoconnect-adapters crmapp <app_name> <CRM-backend> --bare
|
41
|
+
|
42
|
+
|
43
|
+
### Generating CRM source adapters for the Rhoconnect CRM application
|
44
|
+
|
45
|
+
Once you create your Rhoconnect CRM application, you can generate the desired source adapters
|
46
|
+
based on the CRM objects by typing the following command in your application's directory:
|
47
|
+
|
48
|
+
rhoconnect-adapters crmsource <CRM-object-name> <CRM-backend>
|
49
|
+
|
50
|
+
Here, \<CRM\-object\-name\> must exactly correspond to the name of the CRM object you're trying to
|
51
|
+
build the source adapter for.
|
52
|
+
|
53
|
+
## Preparing the Rhoconnect CRM Application
|
54
|
+
|
55
|
+
### OracleOnDemand settings
|
56
|
+
All OracleOnDemand-specific settings are located in the `vendor/oracle_on_demand/settings` directory.
|
57
|
+
In the file `settings.yml` you'll find the entries that you must customize before running the app.
|
58
|
+
These are:
|
59
|
+
|
60
|
+
- **:oraclecrm_service_url:** <oracle_web_services_integration_url> - substitute the default URL with your OracleOnDemand account URL.
|
61
|
+
|
62
|
+
For every source adapter based on CRM object there is a corresponding *'vendor/oracle_on_demand/settings/\<CRM\-object\-name\>.yml'*
|
63
|
+
file containing the descriptions for the OracleOnDemand CRM object.
|
64
|
+
Every CRM object file has the following entries:
|
65
|
+
|
66
|
+
Query_Fields: hash of the objects's fields
|
67
|
+
(each field's element has the value
|
68
|
+
in a form of the hash with the field's options ,
|
69
|
+
containing the following data):
|
70
|
+
Label => <val> - display name of the field
|
71
|
+
Type => <val> - type of the field data
|
72
|
+
(textinput, textarea, Picklist, id, etc.)
|
73
|
+
|
74
|
+
NonQuery_MappingWS_Fields: object's fields that can not be used
|
75
|
+
in OracleCRM Queries
|
76
|
+
(however, Oracle returns them in GetMapping API)
|
77
|
+
|
78
|
+
StaticPickList: Normally, all picklist fields are queried
|
79
|
+
for the allowed values using GetPicklistValues API
|
80
|
+
However, for certain fields OracleCRM API
|
81
|
+
returns the error 'not a valid picklist'
|
82
|
+
This entry is a workaround for this error -
|
83
|
+
fields's picklist values are statically hard-coded here.
|
84
|
+
|
85
|
+
ObjectFields: this one specifies a hash of fields
|
86
|
+
that are actually references to other objects.
|
87
|
+
For example, AccountName field for Contact object
|
88
|
+
is really a reference to the corresponding Account object.'
|
89
|
+
|
90
|
+
TitleFields: this setting specifies an array of fields
|
91
|
+
used in constructing the object's title in the 'Show' page
|
92
|
+
using the Metadata method. Typically, you will want to put
|
93
|
+
`name` fields in here.
|
94
|
+
|
95
|
+
For the default generated CRM object adapters, this file is pre-filled with information. However, you can customize it by including or excluding
|
96
|
+
options. For custom adapters, you need to fill this file with relevant information. List of object's fields, for example, can be obtained
|
97
|
+
from the Oracle CRM On Demand documentation and then later used to fill the Query_Fields setting. Alternatively, user can customize the adapter and obtain
|
98
|
+
the list of fields using the GetMapping API.
|
99
|
+
|
100
|
+
|
101
|
+
### MsDynamics settings
|
102
|
+
All MsDynamics-specific settings are located in the **'vendor/ms_dynamics/settings'** directory.
|
103
|
+
In the file *'settings.yml'* you'll find the entries that are necessary to customize before running the app.
|
104
|
+
These are:
|
105
|
+
|
106
|
+
- **:msdynamics_ticket_url:** <msdynamics_web_services_integration_url> - substitute the default URL with your MsDynamics account URL.
|
107
|
+
|
108
|
+
For every source adapter based on CRM object there is a corresponding *'vendor/msdynamics/settings/\<CRM\-object\-name\>.yml'*
|
109
|
+
file containing the descriptions for the Sugar CRM object.
|
110
|
+
Every CRM object file has the following entries:
|
111
|
+
|
112
|
+
Query_Fields: hash of the objects's fields
|
113
|
+
(each field's element has the value
|
114
|
+
in a form of the hash with the field's options ,
|
115
|
+
containing the following data):
|
116
|
+
Label => <val> - display name of the field
|
117
|
+
Type => <val> - type of the field data
|
118
|
+
(textinput, textarea, Picklist, id, etc.)
|
119
|
+
|
120
|
+
AttributeTypePicklists: this is a hash of picklist arrays
|
121
|
+
for artificially constructed fields
|
122
|
+
that are really represent some other field's type
|
123
|
+
for example, `customerid` field can be either
|
124
|
+
`account` or `contact`. In this case
|
125
|
+
field `customertype_attrtype` will represent `customerid` field's type
|
126
|
+
and will take values from the `AttributeTypePicklists`
|
127
|
+
array for the field `customerid_attrtype`
|
128
|
+
|
129
|
+
ObjectFields: this one specifies a hash of fields
|
130
|
+
that are actually references to other objects.
|
131
|
+
For example, `account_name` field for Contact object
|
132
|
+
is really a reference to the corresponding Account object.
|
133
|
+
|
134
|
+
TitleFields: this setting specifies an array of fields
|
135
|
+
used in constructing the object's title in the 'Show' page
|
136
|
+
using the Metadata method. Typically, you will want to put
|
137
|
+
`name` fields in here.
|
138
|
+
|
139
|
+
For the default generated CRM object adapters, this file is pre-filled with information. However, you can customize it by including or excluding
|
140
|
+
options. For custom adapters, you need to fill this file with relevant information. List of object's fields, for example, can be obtained
|
141
|
+
from the MsDynamics documentation and then later used to fill the Query_Fields setting. Alternatively, user can customize the adapter and obtain
|
142
|
+
the desired list of object's fields using the MsDynamics SOAP API.
|
143
|
+
|
144
|
+
### Sugar settings
|
145
|
+
All Sugar-specific settings are located in the **'vendor/sugar/settings'** directory.
|
146
|
+
In the file *'settings.yml'* you'll find the entries that are necessary to customize before running the app.
|
147
|
+
These are:
|
148
|
+
|
149
|
+
- **:sugarcrm_uri:** <oracle_web_services_integration_url> - substitute the default URL with your OracleOnDemand account URL.
|
150
|
+
- **:debug_enabled:** <true/false> - enable debug output of the backend HTTP transactions.
|
151
|
+
|
152
|
+
For every source adapter based on CRM object there is a corresponding *'vendor/sugar/settings/\<CRM\-object\-name\>.yml'*
|
153
|
+
file containing the descriptions for the Sugar CRM object.
|
154
|
+
Every CRM object file has the following entries:
|
155
|
+
|
156
|
+
Query_Fields: hash of the objects's fields
|
157
|
+
(each field's element has the value
|
158
|
+
in a form of the hash with the field's options ,
|
159
|
+
containing the following data):
|
160
|
+
Label => <val> - display name of the field
|
161
|
+
Type => <val> - type of the field data
|
162
|
+
(textinput, textarea, Picklist, id, etc.)
|
163
|
+
|
164
|
+
ObjectFields: this one specifies a hash of fields
|
165
|
+
that are actually references to other objects.
|
166
|
+
For example, `account_name` field for Contact object
|
167
|
+
is really a reference to the corresponding Account object.
|
168
|
+
|
169
|
+
TitleFields: this setting specifies an array of fields
|
170
|
+
used in constructing the object's title in the 'Show' page
|
171
|
+
using the Metadata method. Typically, you will want to put
|
172
|
+
`name` fields in here.
|
173
|
+
|
174
|
+
For the default generated CRM object adapters, this file is pre-filled with information. However, you can customize it by including or excluding
|
175
|
+
options. For custom adapters, you need to fill this file with relevant information. List of object's fields, for example, can be obtained
|
176
|
+
from the SugarCRM documentation and then later used to fill the Query_Fields setting. Alternatively, user can customize the adapter and obtain
|
177
|
+
the desired list of object's fields using the SugarCRM REST API.
|
178
|
+
|
179
|
+
### Salesforce settings
|
180
|
+
All Salesforce-specific settings are located in the `vendor/salesforce/settings` directory.
|
181
|
+
In the file `settings.yml` you'll find the entries that you must customize before running the app.
|
182
|
+
These are:
|
183
|
+
|
184
|
+
- **:salesforce_login_url:** <salesforce_soap_login_url> - Currently, this parameter is pre-defined to
|
185
|
+
`https://login.salesforce.com/services/Soap/c/22.0` for simple SOAP web service authentication.
|
186
|
+
Rhoconnect-adapters is not using `OAuth2` scheme at this point.
|
187
|
+
|
188
|
+
For every source adapter based on CRM object there is a corresponding *'vendor/salesforce/settings/\<CRM\-object\-name\>.yml'*
|
189
|
+
file containing the descriptions for the OracleOnDemand CRM object.
|
190
|
+
Every CRM object file has the following entries:
|
191
|
+
|
192
|
+
Query_Fields: hash of the objects's fields
|
193
|
+
(each field's element has the value
|
194
|
+
in a form of the hash with the field's options ,
|
195
|
+
containing the following data):
|
196
|
+
Label => <val> - display name of the field
|
197
|
+
Type => <val> - type of the field data
|
198
|
+
(textinput, textarea, Picklist, datetime, id, etc.)
|
199
|
+
|
200
|
+
ObjectFields: this one specifies a hash of fields
|
201
|
+
that are actually references to other objects.
|
202
|
+
For example, AccountId field for Contact object
|
203
|
+
is really a reference to the corresponding Account object.'
|
204
|
+
|
205
|
+
TitleFields: this setting specifies an array of fields
|
206
|
+
used in constructing the object's title in the 'Show' page
|
207
|
+
using the Metadata method. Typically, you will want to put
|
208
|
+
`name` fields in here.
|
209
|
+
|
210
|
+
For the default generated CRM object adapters, this file is pre-filled with sample information. However, you can customize it by including or excluding
|
211
|
+
different fields. For custom adapters, you need to fill this file with relevant information. List of object's fields, for example, can be obtained
|
212
|
+
from the Salesforce documentation and then later used to fill the Query_Fields setting. Alternatively, user can customize the adapter and obtain
|
213
|
+
the list of fields using the `/sobjects/<CRM-object-name>/describe/` API.
|
214
|
+
|
215
|
+
|
216
|
+
## Running the CRM Application
|
217
|
+
Once your Rhoconnect application is customized and ready to run, you can start it like any other Rhoconnect app.
|
218
|
+
Type the following command in the CRM application's root directory:
|
219
|
+
|
220
|
+
rake rhoconnect:start
|
221
|
+
|
222
|
+
|
223
|
+
## Meta
|
224
|
+
Created and maintained by Rhomobile Inc.
|
225
|
+
|
226
|
+
Released under the [MIT License](http://www.opensource.org/licenses/mit-license.php).
|
@@ -0,0 +1,18 @@
|
|
1
|
+
RhoConnect Adapters Introduction
|
2
|
+
===
|
3
|
+
|
4
|
+
rhoconnect-adapters is a ruby library containing a collection of the out-of-box [RhoConnect](http://rhomobile.com/products/rhoconnect) applications
|
5
|
+
for various needs.
|
6
|
+
|
7
|
+
## Setup
|
8
|
+
Install the 'rhoconnect-adapters' gem by using the following command:
|
9
|
+
|
10
|
+
$ [sudo] gem install rhoconnect-adapters
|
11
|
+
|
12
|
+
|
13
|
+
## Usage
|
14
|
+
The 'rhoconnect-adapters' command creates pre-built [RhoConnect](http://rhomobile.com/products/rhoconnect/) applications.
|
15
|
+
Visit the [RhoConnect](http://rhomobile.com/products/rhoconnect/) website for more information.
|
16
|
+
|
17
|
+
|
18
|
+
<img src='https://s3.amazonaws.com/rhodocs/rhoconnect/rhoconnect-adapters-intro.png' alt='image' height='471' width='800' />
|
data/doc/client.txt
CHANGED
@@ -75,7 +75,14 @@ Rhoconnect Client is a library to add sync data capability to your applications.
|
|
75
75
|
@property(assign) NSString* name;
|
76
76
|
|
77
77
|
//possible values: RST_INCREMENTAL, RST_BULK_ONLY
|
78
|
-
@property int sync_type;
|
78
|
+
@property(assign) int sync_type;
|
79
|
+
|
80
|
+
//possible values: RMT_PROPERTY_BAG (default), RMT_PROPERTY_FIXEDSCHEMA
|
81
|
+
@property(assign) int model_type;
|
82
|
+
|
83
|
+
//associations dictionary: the key is attribute name, the value is associated model name
|
84
|
+
//while using associations use object_id attribute as object reference
|
85
|
+
@property(assign) NSDictionary* associations;
|
79
86
|
|
80
87
|
// model constructor
|
81
88
|
- (id) init;
|
@@ -153,13 +160,33 @@ See [rhoconnect-client\Samples\ObjectiveC\store](http://github.com/rhomobile/rho
|
|
153
160
|
RhomModel* product = [[RhomModel alloc] init];
|
154
161
|
product.name = @"Product";
|
155
162
|
|
163
|
+
RhomModel* order = [[RhomModel alloc] init];
|
164
|
+
order.name = @"Order";
|
165
|
+
order.associations = [NSDictionary dictionaryWithObjectsAndKeys: @"Customer", @"customer", @"Product", @"product", nil];
|
166
|
+
|
156
167
|
RhoConnectClient* sclient = [[RhoConnectClient alloc] init];
|
157
|
-
NSArray* models = [NSArray arrayWithObjects:customer, product, nil];
|
168
|
+
NSArray* models = [NSArray arrayWithObjects:customer, product, order, nil];
|
158
169
|
|
159
170
|
[sclient addModels:models];
|
160
171
|
|
161
172
|
sclient.sync_server = @"http://rhodes-store-server.heroku.com/application";
|
162
173
|
|
174
|
+
#### Initialization of Schema model
|
175
|
+
|
176
|
+
RhomModel* product = [[RhomModel alloc] init];
|
177
|
+
product.name = @"Product_s";
|
178
|
+
product.model_type = RMT_PROPERTY_FIXEDSCHEMA;
|
179
|
+
|
180
|
+
To create schema model tables edit database schema file:
|
181
|
+
|
182
|
+
* Copy file <rhoconnect-client>/shared/db/res/db/syncdb.schema to your project folder
|
183
|
+
|
184
|
+
* Edit file syncdb.schema : add create table statment for each schema model. Note that mandatory object column should be in each table:
|
185
|
+
|
186
|
+
"object" varchar(255) PRIMARY KEY
|
187
|
+
|
188
|
+
* Open 'Copy bundle resources' build phase in project target and point it to local project db folder
|
189
|
+
|
163
190
|
#### Login
|
164
191
|
|
165
192
|
:::cplusplus
|