rhodes 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +7 -0
- data/Manifest.txt +0 -1
- data/generators/templates/source/source_adapter.rb +10 -13
- data/lib/rho/rho.rb +18 -15
- data/lib/rho/rhofsconnector.rb +4 -11
- data/lib/rho/rhofsconnectorME.rb +4 -8
- data/lib/rhodes.rb +1 -1
- data/lib/rhom/rhom_db_adapter.rb +1 -1
- data/spec/app_generator_spec.rb +6 -0
- data/spec/model_generator_spec.rb +9 -1
- data/spec/rho_spec.rb +6 -2
- data/spec/spec_helper.rb +1 -1
- metadata +3 -4
- data/lib/find.rb +0 -81
data/History.txt
CHANGED
data/Manifest.txt
CHANGED
@@ -1,38 +1,35 @@
|
|
1
|
-
class <%=name%>
|
2
|
-
attr_accessor :client
|
1
|
+
class <%=name%> < SourceAdapter
|
3
2
|
|
4
3
|
def initialize(source)
|
5
|
-
|
4
|
+
super
|
6
5
|
end
|
7
6
|
|
8
7
|
def login
|
8
|
+
#TODO: Write some code here
|
9
9
|
end
|
10
10
|
|
11
11
|
def query
|
12
|
+
# TODO: write some code here
|
12
13
|
end
|
13
14
|
|
14
15
|
def sync
|
15
|
-
|
16
|
-
|
17
|
-
o=ObjectValue.new
|
18
|
-
o.source_id=@source.id
|
19
|
-
o.object=x['id']
|
20
|
-
o.attrib=y.name
|
21
|
-
o.value=y.value
|
22
|
-
o.save
|
23
|
-
end
|
24
|
-
end
|
16
|
+
# usually the generic base class sync does the job
|
17
|
+
super
|
25
18
|
end
|
26
19
|
|
27
20
|
def create(name_value_list)
|
21
|
+
#TODO: write some code here
|
28
22
|
end
|
29
23
|
|
30
24
|
def update(name_value_list)
|
25
|
+
#TODO: write some code here
|
31
26
|
end
|
32
27
|
|
33
28
|
def delete(name_value_list)
|
29
|
+
#TODO: write some code here if applicable
|
34
30
|
end
|
35
31
|
|
36
32
|
def logoff
|
33
|
+
#TODO: write some code here if applicable
|
37
34
|
end
|
38
35
|
end
|
data/lib/rho/rho.rb
CHANGED
@@ -12,13 +12,13 @@ module Rho
|
|
12
12
|
class RHO
|
13
13
|
APPLICATIONS = {}
|
14
14
|
|
15
|
-
def initialize(
|
15
|
+
def initialize(app_manifest_filename=nil)
|
16
16
|
puts "Calling RHO.initialize"
|
17
17
|
Rhom::RhomDbAdapter::open(Rho::RhoFSConnector::get_db_fullpathname)
|
18
|
-
if
|
19
|
-
process_model_dirs(
|
18
|
+
if app_manifest_filename
|
19
|
+
process_model_dirs(app_manifest_filename)
|
20
20
|
else
|
21
|
-
process_model_dirs(
|
21
|
+
process_model_dirs(Rho::RhoFSConnector::get_app_manifest_filename)
|
22
22
|
end
|
23
23
|
init_sources
|
24
24
|
end
|
@@ -29,17 +29,15 @@ module Rho
|
|
29
29
|
end
|
30
30
|
|
31
31
|
# Return the directories where we need to load configuration files
|
32
|
-
def process_model_dirs(
|
33
|
-
|
34
|
-
require
|
32
|
+
def process_model_dirs(app_manifest_filename=nil)
|
33
|
+
File.open(app_manifest_filename).each do |line|
|
34
|
+
require File.join(File.dirname(app_manifest_filename), line.chop)
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
38
38
|
# setup the sources table and model attributes for all applications
|
39
39
|
def init_sources
|
40
|
-
|
41
|
-
if defined? Rho::RhoConfig::sources and not self.sources_initialized?
|
42
|
-
Rhom::RhomDbAdapter::delete_all_from_table('sources')
|
40
|
+
if defined? Rho::RhoConfig::sources
|
43
41
|
src_attribs = []
|
44
42
|
|
45
43
|
# quick and dirty way to get unique array of hashes
|
@@ -47,22 +45,27 @@ module Rho
|
|
47
45
|
result << h unless result.include?(h); result
|
48
46
|
}
|
49
47
|
|
50
|
-
# generate unique source list in
|
48
|
+
# generate unique source list in database for sync
|
51
49
|
uniq_sources.each do |source|
|
50
|
+
|
52
51
|
src_id = source['source_id']
|
53
52
|
url = source['url']
|
54
|
-
|
55
|
-
|
53
|
+
if !self.source_initialized?(src_id)
|
54
|
+
puts "initializing source #{src_id}..."
|
55
|
+
Rhom::RhomDbAdapter::insert_into_table('sources',
|
56
|
+
{"source_id"=>src_id,"source_url"=>url})
|
57
|
+
end
|
56
58
|
end
|
57
59
|
end
|
58
60
|
end
|
59
61
|
|
60
|
-
def
|
61
|
-
Rhom::RhomDbAdapter::select_from_table('sources','*').size > 0 ? true : false
|
62
|
+
def source_initialized?(source_id)
|
63
|
+
Rhom::RhomDbAdapter::select_from_table('sources','*', 'source_id'=>source_id).size > 0 ? true : false
|
62
64
|
end
|
63
65
|
|
64
66
|
def get_app(appname)
|
65
67
|
if (APPLICATIONS[appname].nil?)
|
68
|
+
puts "app require: #{RhoApplication::get_app_path(appname)+'application'}"
|
66
69
|
require RhoApplication::get_app_path(appname)+'application'
|
67
70
|
APPLICATIONS[appname] = Object.const_get(appname+'Application').new
|
68
71
|
end
|
data/lib/rho/rhofsconnector.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
require 'find'
|
2
|
-
|
3
1
|
module Rho
|
4
2
|
class RhoFSConnector
|
5
3
|
|
@@ -12,6 +10,10 @@ module Rho
|
|
12
10
|
def get_base_app_path
|
13
11
|
File.join(File.dirname(File.expand_path(__FILE__)), '../../apps/')
|
14
12
|
end
|
13
|
+
|
14
|
+
def get_app_manifest_filename
|
15
|
+
File.join(File.dirname(File.expand_path(__FILE__)), '../../apps/app_manifest.txt')
|
16
|
+
end
|
15
17
|
|
16
18
|
def get_model_path(appname, modelname)
|
17
19
|
File.join(File.dirname(File.expand_path(__FILE__)), '../../apps/'+appname+'/'+modelname+'/')
|
@@ -24,15 +26,6 @@ module Rho
|
|
24
26
|
File.join(File.dirname(File.expand_path(__FILE__)), '../../db/syncdb.sqlite')
|
25
27
|
end
|
26
28
|
end
|
27
|
-
|
28
|
-
def enum_files(paths, filename) # :yield: path
|
29
|
-
Find.find(paths) do |path|
|
30
|
-
if File.basename(path) == filename
|
31
|
-
yield path
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
29
|
end
|
37
30
|
|
38
31
|
end # RhoApplication
|
data/lib/rho/rhofsconnectorME.rb
CHANGED
@@ -11,6 +11,10 @@ module Rho
|
|
11
11
|
def get_base_app_path
|
12
12
|
'apps/'
|
13
13
|
end
|
14
|
+
|
15
|
+
def get_app_manifest_filename
|
16
|
+
get_base_app_path+'app_manifest.txt'
|
17
|
+
end
|
14
18
|
|
15
19
|
def get_model_path(appname, modelname)
|
16
20
|
'apps/'+appname+'/'+modelname+'/'
|
@@ -23,14 +27,6 @@ module Rho
|
|
23
27
|
'syncdb_.dbs'
|
24
28
|
end
|
25
29
|
end
|
26
|
-
|
27
|
-
def enum_files(paths, filename) # :yield: path
|
28
|
-
yield get_app_path('Rhosugar/Account') + filename
|
29
|
-
yield get_app_path('Rhosugar/Case') + filename
|
30
|
-
yield get_app_path('Rhosugar/Employee') + filename
|
31
|
-
end
|
32
|
-
|
33
30
|
end
|
34
|
-
|
35
31
|
end # RhoApplication
|
36
32
|
end # Rho
|
data/lib/rhodes.rb
CHANGED
data/lib/rhom/rhom_db_adapter.rb
CHANGED
data/spec/app_generator_spec.rb
CHANGED
@@ -10,6 +10,12 @@ describe Rhogen::AppGenerator do
|
|
10
10
|
}.should raise_error(::Templater::TooFewArgumentsError)
|
11
11
|
end
|
12
12
|
|
13
|
+
|
14
|
+
it "should generate class_name" do
|
15
|
+
@generator = Rhogen::AppGenerator.new('/tmp', {}, 'Class-With-Hyphens')
|
16
|
+
@generator.class_name.should == 'ClassWithHyphens'
|
17
|
+
end
|
18
|
+
|
13
19
|
before do
|
14
20
|
@generator = Rhogen::AppGenerator.new('/tmp', {}, app_name)
|
15
21
|
end
|
@@ -12,7 +12,15 @@ describe Rhogen::ModelGenerator do
|
|
12
12
|
end
|
13
13
|
|
14
14
|
before do
|
15
|
-
@generator = Rhogen::ModelGenerator.new('/tmp', {}, model_name, "http://something.com/sources/5", 5)
|
15
|
+
@generator = Rhogen::ModelGenerator.new('/tmp', {}, model_name, "http://something.com/sources/5", 5, "name,industry,address")
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should have attributes" do
|
19
|
+
@generator.attributes?.should == true
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should have all attributes" do
|
23
|
+
@generator.attributes.should == ['name', 'industry', 'address']
|
16
24
|
end
|
17
25
|
|
18
26
|
it "should create config.rb, controller.rb, index.erb, edit.erb, and new.erb files" do
|
data/spec/rho_spec.rb
CHANGED
@@ -31,9 +31,13 @@ describe "Rho" do
|
|
31
31
|
|
32
32
|
it "should initialize configuration only once" do
|
33
33
|
Rhom::RhomDbAdapter::delete_all_from_table('sources')
|
34
|
-
@rho.
|
34
|
+
@rho.source_initialized?(1).should == false
|
35
35
|
@rho.init_sources
|
36
|
-
@rho.
|
36
|
+
@rho.source_initialized?(1).should == true
|
37
|
+
end
|
38
|
+
|
39
|
+
it "should return from get_app" do
|
40
|
+
pending "fix relative paths for testing of get_app"
|
37
41
|
end
|
38
42
|
|
39
43
|
it "should serve request" do
|
data/spec/spec_helper.rb
CHANGED
@@ -21,7 +21,7 @@ describe "rho initializer", :shared => true do
|
|
21
21
|
FileUtils.mkdir_p('build')
|
22
22
|
FileUtils.cp_r('spec/syncdbtest.sqlite','build/syncdbtest.sqlite')
|
23
23
|
Object::const_set("SYNC_DB_FILE", "../../build/syncdbtest.sqlite") unless defined? SYNC_DB_FILE
|
24
|
-
@rho = Rho::RHO.new(File.dirname(__FILE__)
|
24
|
+
@rho = Rho::RHO.new(File.join(File.dirname(File.expand_path(__FILE__)), '../../../apps/app_manifest.txt'))
|
25
25
|
@rhom = Rhom::RhomObjectFactory.new
|
26
26
|
end
|
27
27
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rhodes
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rhomobile Dev
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-12-
|
12
|
+
date: 2008-12-11 00:00:00 -08:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -80,7 +80,7 @@ dependencies:
|
|
80
80
|
requirements:
|
81
81
|
- - ">="
|
82
82
|
- !ruby/object:Gem::Version
|
83
|
-
version: 1.
|
83
|
+
version: 1.2.0
|
84
84
|
version:
|
85
85
|
- !ruby/object:Gem::Dependency
|
86
86
|
name: hoe
|
@@ -125,7 +125,6 @@ files:
|
|
125
125
|
- lib/date.rb
|
126
126
|
- lib/date/format.rb
|
127
127
|
- lib/erb.rb
|
128
|
-
- lib/find.rb
|
129
128
|
- lib/rational.rb
|
130
129
|
- lib/rho.rb
|
131
130
|
- lib/rho/render.rb
|
data/lib/find.rb
DELETED
@@ -1,81 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# find.rb: the Find module for processing all files under a given directory.
|
3
|
-
#
|
4
|
-
|
5
|
-
#
|
6
|
-
# The +Find+ module supports the top-down traversal of a set of file paths.
|
7
|
-
#
|
8
|
-
# For example, to total the size of all files under your home directory,
|
9
|
-
# ignoring anything in a "dot" directory (e.g. $HOME/.ssh):
|
10
|
-
#
|
11
|
-
# require 'find'
|
12
|
-
#
|
13
|
-
# total_size = 0
|
14
|
-
#
|
15
|
-
# Find.find(ENV["HOME"]) do |path|
|
16
|
-
# if FileTest.directory?(path)
|
17
|
-
# if File.basename(path)[0] == ?.
|
18
|
-
# Find.prune # Don't look any further into this directory.
|
19
|
-
# else
|
20
|
-
# next
|
21
|
-
# end
|
22
|
-
# else
|
23
|
-
# total_size += FileTest.size(path)
|
24
|
-
# end
|
25
|
-
# end
|
26
|
-
#
|
27
|
-
module Find
|
28
|
-
|
29
|
-
#
|
30
|
-
# Calls the associated block with the name of every file and directory listed
|
31
|
-
# as arguments, then recursively on their subdirectories, and so on.
|
32
|
-
#
|
33
|
-
# See the +Find+ module documentation for an example.
|
34
|
-
#
|
35
|
-
def find(*paths) # :yield: path
|
36
|
-
block_given? or return enum_for(__method__, *paths)
|
37
|
-
|
38
|
-
paths.collect!{|d| raise Errno::ENOENT unless File.exist?(d); d.dup}
|
39
|
-
while file = paths.shift
|
40
|
-
catch(:prune) do
|
41
|
-
yield file.dup.taint
|
42
|
-
next unless File.exist? file
|
43
|
-
begin
|
44
|
-
if File.lstat(file).directory? then
|
45
|
-
d = Dir.open(file)
|
46
|
-
begin
|
47
|
-
for f in d
|
48
|
-
next if f == "." or f == ".."
|
49
|
-
if File::ALT_SEPARATOR and file =~ /^(?:[\/\\]|[A-Za-z]:[\/\\]?)$/ then
|
50
|
-
f = file + f
|
51
|
-
elsif file == "/" then
|
52
|
-
f = "/" + f
|
53
|
-
else
|
54
|
-
f = File.join(file, f)
|
55
|
-
end
|
56
|
-
paths.unshift f.untaint
|
57
|
-
end
|
58
|
-
ensure
|
59
|
-
d.close
|
60
|
-
end
|
61
|
-
end
|
62
|
-
rescue Errno::ENOENT, Errno::EACCES
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
#
|
69
|
-
# Skips the current file or directory, restarting the loop with the next
|
70
|
-
# entry. If the current file is a directory, that directory will not be
|
71
|
-
# recursively entered. Meaningful only within the block associated with
|
72
|
-
# Find::find.
|
73
|
-
#
|
74
|
-
# See the +Find+ module documentation for an example.
|
75
|
-
#
|
76
|
-
def prune
|
77
|
-
throw :prune
|
78
|
-
end
|
79
|
-
|
80
|
-
module_function :find, :prune
|
81
|
-
end
|