restfulx 1.2.1 → 1.2.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (98) hide show
  1. data/Rakefile +65 -30
  2. data/VERSION.yml +4 -0
  3. data/app_generators/rx_app/rx_app_generator.rb +25 -9
  4. data/app_generators/rx_app/templates/actionscript.properties +3 -3
  5. data/app_generators/rx_app/templates/actionscriptair.properties +3 -3
  6. data/app_generators/rx_app/templates/app.yaml.erb +1 -1
  7. data/app_generators/rx_app/templates/default_tasks.rake +5 -18
  8. data/app_generators/rx_app/templates/generate.rb +1 -1
  9. data/app_generators/rx_app/templates/index.html.erb +1 -1
  10. data/app_generators/rx_app/templates/mainair-app.xml +3 -3
  11. data/app_generators/rx_app/templates/mainapp.mxml +123 -2
  12. data/app_generators/rx_app/templates/project-textmate.erb +4 -4
  13. data/app_generators/rx_app/templates/project.properties +1 -1
  14. data/app_generators/rx_app/templates/projectair.properties +1 -1
  15. data/app_generators/rx_app/templates/restfulx.yml +25 -0
  16. data/bin/rx-gen +1 -1
  17. data/lib/restfulx/active_foo.rb +0 -8
  18. data/lib/restfulx/active_record_tasks.rb +9 -0
  19. data/lib/restfulx/active_record_uuid_helper.rb +17 -0
  20. data/lib/restfulx/configuration.rb +19 -31
  21. data/lib/restfulx/rails/schema_to_yaml/extensions/enumerable.rb +8 -0
  22. data/lib/restfulx/rails/schema_to_yaml/settings/config.rb +17 -0
  23. data/lib/restfulx/rails/schema_to_yaml/settings/core.rb +70 -0
  24. data/lib/restfulx/rails/schema_to_yaml.rb +121 -0
  25. data/lib/restfulx/rails/swf_helper.rb +1 -6
  26. data/lib/restfulx/tasks.rb +68 -42
  27. data/lib/restfulx.rb +4 -35
  28. data/rails_generators/rx_config/USAGE +2 -1
  29. data/rails_generators/rx_config/rx_config_generator.rb +80 -53
  30. data/rails_generators/rx_config/templates/actionscript.properties +3 -3
  31. data/rails_generators/rx_config/templates/actionscriptair.properties +3 -3
  32. data/rails_generators/rx_config/templates/flex_controller.erb +4 -0
  33. data/rails_generators/rx_config/templates/{index.html.erb → index.erb} +2 -4
  34. data/rails_generators/rx_config/templates/mainair-app.xml +3 -3
  35. data/rails_generators/rx_config/templates/mainapp.mxml +100 -2
  36. data/rails_generators/rx_config/templates/project-textmate.erb +4 -4
  37. data/rails_generators/rx_config/templates/project.properties +1 -1
  38. data/rails_generators/rx_config/templates/projectair.properties +1 -1
  39. data/rails_generators/rx_config/templates/restfulx.erb +38 -0
  40. data/rails_generators/rx_config/templates/restfulx.yml +55 -4
  41. data/rails_generators/rx_config/templates/restfulx_tasks.rake +3 -0
  42. data/rails_generators/rx_config/templates/routes.erb +47 -0
  43. data/rails_generators/rx_controller/rx_controller_generator.rb +9 -6
  44. data/rails_generators/rx_controller/templates/controller.as.erb +7 -9
  45. data/rails_generators/rx_main_app/rx_main_app_generator.rb +60 -0
  46. data/rails_generators/rx_main_app/templates/mainapp.mxml +129 -0
  47. data/rails_generators/rx_scaffold/rx_scaffold_generator.rb +88 -34
  48. data/rails_generators/rx_scaffold/templates/{controller.rb.erb → controllers/default.rb.erb} +29 -1
  49. data/rails_generators/rx_scaffold/templates/controllers/resource_controller.rb.erb +23 -0
  50. data/rails_generators/rx_scaffold/templates/fixtures.yml.erb +9 -5
  51. data/{generators/rx_scaffold/templates/component.mxml.erb → rails_generators/rx_scaffold/templates/layouts/default.erb} +75 -59
  52. data/rails_generators/rx_scaffold/templates/migration.rb.erb +29 -2
  53. data/rails_generators/rx_scaffold/templates/model.as.erb +33 -2
  54. data/rails_generators/rx_scaffold/templates/model.rb.erb +36 -1
  55. data/rails_generators/rx_yaml_scaffold/rx_yaml_scaffold_generator.rb +29 -10
  56. data/{generators → rxgen_generators}/rx_controller/rx_controller_generator.rb +7 -5
  57. data/{generators → rxgen_generators}/rx_controller/templates/assist.py +3 -3
  58. data/{generators → rxgen_generators}/rx_controller/templates/controller.as.erb +8 -6
  59. data/rxgen_generators/rx_controller/templates/iso8601.py +92 -0
  60. data/rxgen_generators/rx_main_app/USAGE +8 -0
  61. data/{generators → rxgen_generators}/rx_main_app/rx_main_app_generator.rb +10 -5
  62. data/rxgen_generators/rx_main_app/templates/mainapp.mxml +152 -0
  63. data/{generators → rxgen_generators}/rx_scaffold/rx_scaffold_generator.rb +6 -5
  64. data/{rails_generators → rxgen_generators}/rx_scaffold/templates/component.mxml.erb +24 -52
  65. data/spec/restfulx_spec.rb +1 -4
  66. data/spec/spec_helper.rb +0 -3
  67. data/tasks/restfulx.rake +2 -0
  68. metadata +102 -81
  69. data/History.txt +0 -7
  70. data/Manifest.txt +0 -127
  71. data/generators/rx_main_app/templates/mainapp.mxml +0 -35
  72. data/rdoc/generators/template/html/jamis.rb +0 -588
  73. data/tasks/ann.rake +0 -80
  74. data/tasks/bones.rake +0 -20
  75. data/tasks/gem.rake +0 -201
  76. data/tasks/git.rake +0 -40
  77. data/tasks/manifest.rake +0 -48
  78. data/tasks/notes.rake +0 -27
  79. data/tasks/post_load.rake +0 -39
  80. data/tasks/rdoc.rake +0 -50
  81. data/tasks/rubyforge.rake +0 -55
  82. data/tasks/setup.rb +0 -279
  83. data/tasks/spec.rake +0 -54
  84. data/tasks/svn.rake +0 -47
  85. data/tasks/test.rake +0 -40
  86. data/test/rails/playing_around_in_a_console.txt +0 -71
  87. /data/{generators → rails_generators}/rx_main_app/USAGE +0 -0
  88. /data/{generators → rxgen_generators}/rx_config/USAGE +0 -0
  89. /data/{generators → rxgen_generators}/rx_config/rx_config_generator.rb +0 -0
  90. /data/{generators → rxgen_generators}/rx_controller/USAGE +0 -0
  91. /data/{generators → rxgen_generators}/rx_controller/templates/restful.py +0 -0
  92. /data/{generators → rxgen_generators}/rx_main_app/templates/main.py.erb +0 -0
  93. /data/{generators → rxgen_generators}/rx_scaffold/USAGE +0 -0
  94. /data/{generators → rxgen_generators}/rx_scaffold/templates/controller.py.erb +0 -0
  95. /data/{generators → rxgen_generators}/rx_scaffold/templates/model.as.erb +0 -0
  96. /data/{generators → rxgen_generators}/rx_scaffold/templates/model.py.erb +0 -0
  97. /data/{generators → rxgen_generators}/rx_yaml_scaffold/USAGE +0 -0
  98. /data/{generators → rxgen_generators}/rx_yaml_scaffold/rx_yaml_scaffold_generator.rb +0 -0
data/tasks/setup.rb DELETED
@@ -1,279 +0,0 @@
1
-
2
- require 'rubygems'
3
- require 'rake'
4
- require 'rake/clean'
5
- require 'fileutils'
6
- require 'ostruct'
7
-
8
- class OpenStruct; undef :gem; end
9
-
10
- # TODO: make my own openstruct type object that includes descriptions
11
- # TODO: use the descriptions to output help on the available bones options
12
-
13
- PROJ = OpenStruct.new(
14
- # Project Defaults
15
- :name => nil,
16
- :summary => nil,
17
- :description => nil,
18
- :changes => nil,
19
- :authors => nil,
20
- :email => nil,
21
- :url => "\000",
22
- :version => ENV['VERSION'] || '0.0.0',
23
- :exclude => %w(tmp$ bak$ ~$ CVS \.svn/ \.git/ ^pkg/),
24
- :release_name => ENV['RELEASE'],
25
-
26
- # System Defaults
27
- :ruby_opts => %w(-w),
28
- :libs => [],
29
- :history_file => 'History.txt',
30
- :manifest_file => 'Manifest.txt',
31
- :readme_file => 'README.txt',
32
-
33
- # Announce
34
- :ann => OpenStruct.new(
35
- :file => 'announcement.txt',
36
- :text => nil,
37
- :paragraphs => [],
38
- :email => {
39
- :from => nil,
40
- :to => %w(ruby-talk@ruby-lang.org),
41
- :server => 'localhost',
42
- :port => 25,
43
- :domain => ENV['HOSTNAME'],
44
- :acct => nil,
45
- :passwd => nil,
46
- :authtype => :plain
47
- }
48
- ),
49
-
50
- # Gem Packaging
51
- :gem => OpenStruct.new(
52
- :dependencies => [],
53
- :development_dependencies => [],
54
- :executables => nil,
55
- :extensions => FileList['ext/**/extconf.rb'],
56
- :files => nil,
57
- :need_tar => true,
58
- :need_zip => false,
59
- :extras => {}
60
- ),
61
-
62
- # File Annotations
63
- :notes => OpenStruct.new(
64
- :exclude => %w(^tasks/setup\.rb$),
65
- :extensions => %w(.txt .rb .erb .rdoc) << '',
66
- :tags => %w(FIXME OPTIMIZE TODO)
67
- ),
68
-
69
- # Rcov
70
- :rcov => OpenStruct.new(
71
- :dir => 'coverage',
72
- :opts => %w[--sort coverage -T],
73
- :threshold => 90.0,
74
- :threshold_exact => false
75
- ),
76
-
77
- # Rdoc
78
- :rdoc => OpenStruct.new(
79
- :opts => [],
80
- :include => %w(^lib/ ^bin/ ^ext/ \.txt$ \.rdoc$),
81
- :exclude => %w(extconf\.rb$),
82
- :main => nil,
83
- :dir => 'doc',
84
- :remote_dir => nil
85
- ),
86
-
87
- # Rubyforge
88
- :rubyforge => OpenStruct.new(
89
- :name => "\000"
90
- ),
91
-
92
- # Rspec
93
- :spec => OpenStruct.new(
94
- :files => FileList['spec/**/*_spec.rb'],
95
- :opts => []
96
- ),
97
-
98
- # Subversion Repository
99
- :svn => OpenStruct.new(
100
- :root => nil,
101
- :path => '',
102
- :trunk => 'trunk',
103
- :tags => 'tags',
104
- :branches => 'branches'
105
- ),
106
-
107
- # Test::Unit
108
- :test => OpenStruct.new(
109
- :files => FileList['test/**/test_*.rb'],
110
- :file => 'test/all.rb',
111
- :opts => []
112
- )
113
- )
114
-
115
- # Load the other rake files in the tasks folder
116
- tasks_dir = File.expand_path(File.dirname(__FILE__))
117
- post_load_fn = File.join(tasks_dir, 'post_load.rake')
118
- rakefiles = Dir.glob(File.join(tasks_dir, '*.rake')).sort
119
- rakefiles.unshift(rakefiles.delete(post_load_fn)).compact!
120
- import(*rakefiles)
121
-
122
- # Setup the project libraries
123
- %w(lib ext).each {|dir| PROJ.libs << dir if test ?d, dir}
124
-
125
- # Setup some constants
126
- WIN32 = %r/djgpp|(cyg|ms|bcc)win|mingw/ =~ RUBY_PLATFORM unless defined? WIN32
127
-
128
- DEV_NULL = WIN32 ? 'NUL:' : '/dev/null'
129
-
130
- def quiet( &block )
131
- io = [STDOUT.dup, STDERR.dup]
132
- STDOUT.reopen DEV_NULL
133
- STDERR.reopen DEV_NULL
134
- block.call
135
- ensure
136
- STDOUT.reopen io.first
137
- STDERR.reopen io.last
138
- $stdout, $stderr = STDOUT, STDERR
139
- end
140
-
141
- DIFF = if WIN32 then 'diff.exe'
142
- else
143
- if quiet {system "gdiff", __FILE__, __FILE__} then 'gdiff'
144
- else 'diff' end
145
- end unless defined? DIFF
146
-
147
- SUDO = if WIN32 then ''
148
- else
149
- if quiet {system 'which sudo'} then 'sudo'
150
- else '' end
151
- end
152
-
153
- RCOV = WIN32 ? 'rcov.bat' : 'rcov'
154
- RDOC = WIN32 ? 'rdoc.bat' : 'rdoc'
155
- GEM = WIN32 ? 'gem.bat' : 'gem'
156
-
157
- %w(rcov spec/rake/spectask rubyforge bones facets/ansicode).each do |lib|
158
- begin
159
- require lib
160
- Object.instance_eval {const_set "HAVE_#{lib.tr('/','_').upcase}", true}
161
- rescue LoadError
162
- Object.instance_eval {const_set "HAVE_#{lib.tr('/','_').upcase}", false}
163
- end
164
- end
165
- HAVE_SVN = (Dir.entries(Dir.pwd).include?('.svn') and
166
- system("svn --version 2>&1 > #{DEV_NULL}"))
167
- HAVE_GIT = (Dir.entries(Dir.pwd).include?('.git') and
168
- system("git --version 2>&1 > #{DEV_NULL}"))
169
-
170
- # Add bones as a development dependency
171
- #
172
- if HAVE_BONES
173
- PROJ.gem.development_dependencies << ['bones', ">= #{Bones::VERSION}"]
174
- end
175
-
176
- # Reads a file at +path+ and spits out an array of the +paragraphs+
177
- # specified.
178
- #
179
- # changes = paragraphs_of('History.txt', 0..1).join("\n\n")
180
- # summary, *description = paragraphs_of('README.txt', 3, 3..8)
181
- #
182
- def paragraphs_of( path, *paragraphs )
183
- title = String === paragraphs.first ? paragraphs.shift : nil
184
- ary = File.read(path).delete("\r").split(/\n\n+/)
185
-
186
- result = if title
187
- tmp, matching = [], false
188
- rgxp = %r/^=+\s*#{Regexp.escape(title)}/i
189
- paragraphs << (0..-1) if paragraphs.empty?
190
-
191
- ary.each do |val|
192
- if val =~ rgxp
193
- break if matching
194
- matching = true
195
- rgxp = %r/^=+/i
196
- elsif matching
197
- tmp << val
198
- end
199
- end
200
- tmp
201
- else ary end
202
-
203
- result.values_at(*paragraphs)
204
- end
205
-
206
- # Adds the given gem _name_ to the current project's dependency list. An
207
- # optional gem _version_ can be given. If omitted, the newest gem version
208
- # will be used.
209
- #
210
- def depend_on( name, version = nil )
211
- spec = Gem.source_index.find_name(name).last
212
- version = spec.version.to_s if version.nil? and !spec.nil?
213
-
214
- PROJ.gem.dependencies << case version
215
- when nil; [name]
216
- when %r/^\d/; [name, ">= #{version}"]
217
- else [name, version] end
218
- end
219
-
220
- # Adds the given arguments to the include path if they are not already there
221
- #
222
- def ensure_in_path( *args )
223
- args.each do |path|
224
- path = File.expand_path(path)
225
- $:.unshift(path) if test(?d, path) and not $:.include?(path)
226
- end
227
- end
228
-
229
- # Find a rake task using the task name and remove any description text. This
230
- # will prevent the task from being displayed in the list of available tasks.
231
- #
232
- def remove_desc_for_task( names )
233
- Array(names).each do |task_name|
234
- task = Rake.application.tasks.find {|t| t.name == task_name}
235
- next if task.nil?
236
- task.instance_variable_set :@comment, nil
237
- end
238
- end
239
-
240
- # Change working directories to _dir_, call the _block_ of code, and then
241
- # change back to the original working directory (the current directory when
242
- # this method was called).
243
- #
244
- def in_directory( dir, &block )
245
- curdir = pwd
246
- begin
247
- cd dir
248
- return block.call
249
- ensure
250
- cd curdir
251
- end
252
- end
253
-
254
- # Scans the current working directory and creates a list of files that are
255
- # candidates to be in the manifest.
256
- #
257
- def manifest_files
258
- files = []
259
- exclude = Regexp.new(PROJ.exclude.join('|'))
260
- Find.find '.' do |path|
261
- path.sub! %r/^(\.\/|\/)/o, ''
262
- next unless test ?f, path
263
- next if path =~ exclude
264
- files << path
265
- end
266
- files.sort!
267
- end
268
-
269
- # We need a "valid" method thtat determines if a string is suitable for use
270
- # in the gem specification.
271
- #
272
- class Object
273
- def valid?
274
- return !(self.empty? or self == "\000") if self.respond_to?(:to_str)
275
- return false
276
- end
277
- end
278
-
279
- # EOF
data/tasks/spec.rake DELETED
@@ -1,54 +0,0 @@
1
-
2
- if HAVE_SPEC_RAKE_SPECTASK and not PROJ.spec.files.to_a.empty?
3
- require 'spec/rake/verify_rcov'
4
-
5
- namespace :spec do
6
-
7
- desc 'Run all specs with basic output'
8
- Spec::Rake::SpecTask.new(:run) do |t|
9
- t.ruby_opts = PROJ.ruby_opts
10
- t.spec_opts = PROJ.spec.opts
11
- t.spec_files = PROJ.spec.files
12
- t.libs += PROJ.libs
13
- end
14
-
15
- desc 'Run all specs with text output'
16
- Spec::Rake::SpecTask.new(:specdoc) do |t|
17
- t.ruby_opts = PROJ.ruby_opts
18
- t.spec_opts = PROJ.spec.opts + ['--format', 'specdoc']
19
- t.spec_files = PROJ.spec.files
20
- t.libs += PROJ.libs
21
- end
22
-
23
- if HAVE_RCOV
24
- desc 'Run all specs with RCov'
25
- Spec::Rake::SpecTask.new(:rcov) do |t|
26
- t.ruby_opts = PROJ.ruby_opts
27
- t.spec_opts = PROJ.spec.opts
28
- t.spec_files = PROJ.spec.files
29
- t.libs += PROJ.libs
30
- t.rcov = true
31
- t.rcov_dir = PROJ.rcov.dir
32
- t.rcov_opts = PROJ.rcov.opts + ['--exclude', 'spec']
33
- end
34
-
35
- RCov::VerifyTask.new(:verify) do |t|
36
- t.threshold = PROJ.rcov.threshold
37
- t.index_html = File.join(PROJ.rcov.dir, 'index.html')
38
- t.require_exact_threshold = PROJ.rcov.threshold_exact
39
- end
40
-
41
- task :verify => :rcov
42
- remove_desc_for_task %w(spec:clobber_rcov)
43
- end
44
-
45
- end # namespace :spec
46
-
47
- desc 'Alias to spec:run'
48
- task :spec => 'spec:run'
49
-
50
- task :clobber => 'spec:clobber_rcov' if HAVE_RCOV
51
-
52
- end # if HAVE_SPEC_RAKE_SPECTASK
53
-
54
- # EOF
data/tasks/svn.rake DELETED
@@ -1,47 +0,0 @@
1
-
2
- if HAVE_SVN
3
-
4
- unless PROJ.svn.root
5
- info = %x/svn info ./
6
- m = %r/^Repository Root:\s+(.*)$/.match(info)
7
- PROJ.svn.root = (m.nil? ? '' : m[1])
8
- end
9
- PROJ.svn.root = File.join(PROJ.svn.root, PROJ.svn.path) unless PROJ.svn.path.empty?
10
-
11
- namespace :svn do
12
-
13
- # A prerequisites task that all other tasks depend upon
14
- task :prereqs
15
-
16
- desc 'Show tags from the SVN repository'
17
- task :show_tags => 'svn:prereqs' do |t|
18
- tags = %x/svn list #{File.join(PROJ.svn.root, PROJ.svn.tags)}/
19
- tags.gsub!(%r/\/$/, '')
20
- tags = tags.split("\n").sort {|a,b| b <=> a}
21
- puts tags
22
- end
23
-
24
- desc 'Create a new tag in the SVN repository'
25
- task :create_tag => 'svn:prereqs' do |t|
26
- v = ENV['VERSION'] or abort 'Must supply VERSION=x.y.z'
27
- abort "Versions don't match #{v} vs #{PROJ.version}" if v != PROJ.version
28
-
29
- svn = PROJ.svn
30
- trunk = File.join(svn.root, svn.trunk)
31
- tag = "%s-%s" % [PROJ.name, PROJ.version]
32
- tag = File.join(svn.root, svn.tags, tag)
33
- msg = "Creating tag for #{PROJ.name} version #{PROJ.version}"
34
-
35
- puts "Creating SVN tag '#{tag}'"
36
- unless system "svn cp -m '#{msg}' #{trunk} #{tag}"
37
- abort "Tag creation failed"
38
- end
39
- end
40
-
41
- end # namespace :svn
42
-
43
- task 'gem:release' => 'svn:create_tag'
44
-
45
- end # if PROJ.svn.path
46
-
47
- # EOF
data/tasks/test.rake DELETED
@@ -1,40 +0,0 @@
1
-
2
- if test(?e, PROJ.test.file) or not PROJ.test.files.to_a.empty?
3
- require 'rake/testtask'
4
-
5
- namespace :test do
6
-
7
- Rake::TestTask.new(:run) do |t|
8
- t.libs = PROJ.libs
9
- t.test_files = if test(?f, PROJ.test.file) then [PROJ.test.file]
10
- else PROJ.test.files end
11
- t.ruby_opts += PROJ.ruby_opts
12
- t.ruby_opts += PROJ.test.opts
13
- end
14
-
15
- if HAVE_RCOV
16
- desc 'Run rcov on the unit tests'
17
- task :rcov => :clobber_rcov do
18
- opts = PROJ.rcov.opts.dup << '-o' << PROJ.rcov.dir
19
- opts = opts.join(' ')
20
- files = if test(?f, PROJ.test.file) then [PROJ.test.file]
21
- else PROJ.test.files end
22
- files = files.join(' ')
23
- sh "#{RCOV} #{files} #{opts}"
24
- end
25
-
26
- task :clobber_rcov do
27
- rm_r 'coverage' rescue nil
28
- end
29
- end
30
-
31
- end # namespace :test
32
-
33
- desc 'Alias to test:run'
34
- task :test => 'test:run'
35
-
36
- task :clobber => 'test:clobber_rcov' if HAVE_RCOV
37
-
38
- end
39
-
40
- # EOF
@@ -1,71 +0,0 @@
1
- To play with the test models in a console, do this:
2
-
3
- $> irb -r test/helpers/test_helper.rb -r test/helpers/unit_test_helper.rb
4
-
5
- You can then do things like this:
6
-
7
- $> irb -r test/helpers/test_helper.rb -r test/helpers/unit_test_helper.rb
8
- -- create_table("locations", {:force=>true})
9
- -> 0.0170s
10
- -- create_table("notes", {:force=>true})
11
- -> 0.0091s
12
- -- create_table("projects", {:force=>true})
13
- -> 0.0091s
14
- -- create_table("tasks", {:force=>true})
15
- -> 0.0098s
16
- -- create_table("users", {:force=>true})
17
- -> 0.0506s
18
- -- initialize_schema_migrations_table()
19
- -> 0.0010s
20
- -- assume_migrated_upto_version(20080729045550)
21
- -> 0.0009s
22
- >> u = User.create(:login => 'spatten')
23
- => #<User id: 1, login: "spatten", first_name: nil, last_name: nil, email: nil, created_at: "2008-10-15 17:29:36", updated_at: "2008-10-15 17:29:36">
24
- >> u.tasks << Task.create
25
- => [#<Task id: 1, name: nil, notes: nil, start_time: nil, end_time: nil, completed: nil, next_action: nil, project_id: nil, location_id: nil, user_id: 1, created_at: "2008-10-15 17:29:48", updated_at: "2008-10-15 17:29:48">]
26
- >> u.projects << Project.create
27
- => [#<Project id: 1, name: nil, notes: nil, start_date: nil, end_date: nil, completed: nil, user_id: 1, created_at: "2008-10-15 17:29:54", updated_at: "2008-10-15 17:29:54">]
28
- >> puts u.to_fxml
29
- <?xml version="1.0" encoding="UTF-8"?>
30
- <user>
31
- <created_at type="datetime">2008/10/15 17:29:36</created_at>
32
- <email nil="true"></email>
33
- <first_name nil="true"></first_name>
34
- <id type="integer">1</id>
35
- <last_name nil="true"></last_name>
36
- <login>spatten</login>
37
- <updated_at type="datetime">2008/10/15 17:29:36</updated_at>
38
- <full_name> </full_name>
39
- <has_nothing_to_do type="boolean">false</has_nothing_to_do>
40
- <tasks type="array">
41
- <task>
42
- <completed type="boolean" nil="true"></completed>
43
- <created_at type="datetime">2008/10/15 17:29:48</created_at>
44
- <end_time type="datetime" nil="true"></end_time>
45
- <id type="integer">1</id>
46
- <location_id type="integer" nil="true"></location_id>
47
- <name nil="true"></name>
48
- <next_action type="boolean" nil="true"></next_action>
49
- <notes nil="true"></notes>
50
- <project_id type="integer" nil="true"></project_id>
51
- <start_time type="datetime" nil="true"></start_time>
52
- <updated_at type="datetime">2008/10/15 17:29:48</updated_at>
53
- <user_id type="integer">1</user_id>
54
- </task>
55
- </tasks>
56
- <projects type="array">
57
- <project>
58
- <completed type="boolean" nil="true"></completed>
59
- <created_at type="datetime">2008/10/15 17:29:54</created_at>
60
- <end_date type="date" nil="true"></end_date>
61
- <id type="integer">1</id>
62
- <name nil="true"></name>
63
- <notes nil="true"></notes>
64
- <start_date type="date" nil="true"></start_date>
65
- <updated_at type="datetime">2008/10/15 17:29:54</updated_at>
66
- <user_id type="integer">1</user_id>
67
- </project>
68
- </projects>
69
- </user>
70
- => nil
71
- >>
File without changes
File without changes
File without changes