ruboss4ruby 1.0.5 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (155) hide show
  1. data/History.txt +2 -2
  2. data/Manifest.txt +86 -79
  3. data/README.rdoc +53 -0
  4. data/Rakefile +42 -5
  5. data/app_generators/ruboss_app/USAGE +22 -0
  6. data/app_generators/ruboss_app/ruboss_app_generator.rb +94 -0
  7. data/{merb_generators/templates/ruboss_config → app_generators/ruboss_app/templates}/actionscript.properties +1 -1
  8. data/{merb_generators/templates/ruboss_config → app_generators/ruboss_app/templates}/actionscriptair.properties +0 -0
  9. data/app_generators/ruboss_app/templates/app.yaml.erb +12 -0
  10. data/app_generators/ruboss_app/templates/default_tasks.rake +51 -0
  11. data/app_generators/ruboss_app/templates/empty.txt +0 -0
  12. data/{merb_generators/templates/ruboss_config → app_generators/ruboss_app/templates}/expressInstall.swf +0 -0
  13. data/{merb_generators/templates/ruboss_config → app_generators/ruboss_app/templates}/flex.properties +0 -0
  14. data/app_generators/ruboss_app/templates/generate.rb +17 -0
  15. data/{merb_generators/templates/ruboss_config → app_generators/ruboss_app/templates}/html-template/AC_OETags.js +0 -0
  16. data/{merb_generators/templates/ruboss_config → app_generators/ruboss_app/templates}/html-template/history/history.css +0 -0
  17. data/{merb_generators/templates/ruboss_config → app_generators/ruboss_app/templates}/html-template/history/history.js +0 -0
  18. data/{merb_generators/templates/ruboss_config → app_generators/ruboss_app/templates}/html-template/history/historyFrame.html +0 -0
  19. data/{merb_generators/templates/ruboss_config → app_generators/ruboss_app/templates}/html-template/index.template.html +0 -0
  20. data/{merb_generators/templates/ruboss_config → app_generators/ruboss_app/templates}/html-template/playerProductInstall.swf +0 -0
  21. data/{merb_generators/templates/ruboss_config → app_generators/ruboss_app/templates}/index.html.erb +2 -2
  22. data/app_generators/ruboss_app/templates/index.yaml +11 -0
  23. data/{merb_generators/templates/ruboss_config → app_generators/ruboss_app/templates}/mainair-app.xml +3 -3
  24. data/app_generators/ruboss_app/templates/mainapp-config.xml +21 -0
  25. data/{merb_generators/templates/ruboss_flex_app → app_generators/ruboss_app/templates}/mainapp.mxml +6 -9
  26. data/app_generators/ruboss_app/templates/project-textmate.erb +52 -0
  27. data/{merb_generators/templates/ruboss_config → app_generators/ruboss_app/templates}/project.properties +0 -0
  28. data/{merb_generators/templates/ruboss_config → app_generators/ruboss_app/templates}/projectair.properties +0 -0
  29. data/{merb_generators/templates/ruboss_config → app_generators/ruboss_app/templates}/swfobject.js +0 -0
  30. data/bin/ruboss-gen +31 -0
  31. data/generators/ruboss_config/USAGE +5 -0
  32. data/generators/ruboss_config/ruboss_config_generator.rb +19 -0
  33. data/generators/ruboss_controller/USAGE +10 -0
  34. data/generators/ruboss_controller/ruboss_controller_generator.rb +38 -0
  35. data/generators/ruboss_controller/templates/assist.py +65 -0
  36. data/{merb_generators/templates/ruboss_controller → generators/ruboss_controller/templates}/controller.as.erb +7 -6
  37. data/generators/ruboss_controller/templates/restful.py +136 -0
  38. data/generators/ruboss_main_app/USAGE +8 -0
  39. data/generators/ruboss_main_app/ruboss_main_app_generator.rb +60 -0
  40. data/generators/ruboss_main_app/templates/main.py.erb +29 -0
  41. data/generators/ruboss_main_app/templates/mainapp.mxml +35 -0
  42. data/generators/ruboss_scaffold/USAGE +29 -0
  43. data/generators/ruboss_scaffold/ruboss_scaffold_generator.rb +148 -0
  44. data/generators/ruboss_scaffold/templates/component.mxml.erb +149 -0
  45. data/generators/ruboss_scaffold/templates/controller.py.erb +27 -0
  46. data/generators/ruboss_scaffold/templates/model.as.erb +42 -0
  47. data/generators/ruboss_scaffold/templates/model.py.erb +14 -0
  48. data/generators/ruboss_yaml_scaffold/USAGE +45 -0
  49. data/generators/ruboss_yaml_scaffold/ruboss_yaml_scaffold_generator.rb +47 -0
  50. data/lib/ruboss4ruby/active_foo.rb +109 -86
  51. data/lib/ruboss4ruby/active_record_default_methods.rb +66 -0
  52. data/lib/ruboss4ruby/active_record_tasks.rb +10 -4
  53. data/lib/ruboss4ruby/configuration.rb +48 -34
  54. data/lib/ruboss4ruby/datamapper_foo.rb +31 -0
  55. data/lib/ruboss4ruby/{recipes.rb → rails/recipes.rb} +7 -9
  56. data/lib/ruboss4ruby/{ruboss_helper.rb → rails/swf_helper.rb} +14 -8
  57. data/lib/ruboss4ruby/tasks.rb +9 -4
  58. data/lib/ruboss4ruby.rb +72 -27
  59. data/rails_generators/ruboss_config/ruboss_config_generator.rb +3 -15
  60. data/rails_generators/ruboss_config/templates/mainair-app.xml +2 -2
  61. data/rails_generators/ruboss_config/templates/mainapp-config.xml +1 -1
  62. data/rails_generators/ruboss_config/templates/ruboss.yml +2 -4
  63. data/rails_generators/ruboss_config/templates/ruboss_tasks.rake +5 -15
  64. data/rails_generators/ruboss_controller/USAGE +1 -2
  65. data/rails_generators/ruboss_controller/ruboss_controller_generator.rb +3 -14
  66. data/rails_generators/ruboss_controller/templates/controller.as.erb +11 -6
  67. data/rails_generators/ruboss_scaffold/ruboss_scaffold_generator.rb +67 -76
  68. data/rails_generators/ruboss_scaffold/templates/component.mxml.erb +69 -69
  69. data/rails_generators/ruboss_scaffold/templates/model.as.erb +2 -2
  70. data/rails_generators/ruboss_yaml_scaffold/USAGE +38 -1
  71. data/rcl-1.0.txt +0 -0
  72. data/rdoc/generators/template/html/jamis.rb +588 -0
  73. data/ruboss4ruby.gemspec +43 -0
  74. data/spec/ruboss4ruby_spec.rb +7 -0
  75. data/spec/spec_helper.rb +16 -0
  76. data/tasks/ann.rake +80 -0
  77. data/tasks/bones.rake +20 -0
  78. data/tasks/gem.rake +201 -0
  79. data/tasks/git.rake +40 -0
  80. data/tasks/manifest.rake +48 -0
  81. data/tasks/notes.rake +27 -0
  82. data/tasks/post_load.rake +39 -0
  83. data/tasks/rdoc.rake +50 -0
  84. data/tasks/rubyforge.rake +55 -0
  85. data/tasks/setup.rb +279 -0
  86. data/tasks/spec.rake +54 -0
  87. data/tasks/svn.rake +47 -0
  88. data/tasks/test.rake +40 -0
  89. data/test/{controllers → rails/controllers}/application.rb +0 -0
  90. data/test/{controllers → rails/controllers}/locations_controller.rb +0 -0
  91. data/test/{controllers → rails/controllers}/notes_controller.rb +0 -0
  92. data/test/{controllers → rails/controllers}/projects_controller.rb +0 -0
  93. data/test/{controllers → rails/controllers}/tasks_controller.rb +0 -0
  94. data/test/{controllers → rails/controllers}/users_controller.rb +0 -0
  95. data/test/{database.yml → rails/database.yml} +0 -0
  96. data/test/{fixtures → rails/fixtures}/locations.yml +0 -0
  97. data/test/{fixtures → rails/fixtures}/notes.yml +0 -0
  98. data/test/{fixtures → rails/fixtures}/projects.yml +0 -0
  99. data/test/rails/fixtures/simple_properties.yml +19 -0
  100. data/test/{fixtures → rails/fixtures}/tasks.yml +0 -0
  101. data/test/{fixtures → rails/fixtures}/users.yml +0 -0
  102. data/test/{helpers → rails/helpers}/functional_test_helper.rb +0 -11
  103. data/test/rails/helpers/test_helper.rb +61 -0
  104. data/test/rails/helpers/unit_test_helper.rb +30 -0
  105. data/test/{model.yml → rails/model.yml} +0 -0
  106. data/test/{models → rails/models}/location.rb +0 -0
  107. data/test/{models → rails/models}/note.rb +0 -0
  108. data/test/{models → rails/models}/project.rb +1 -3
  109. data/test/rails/models/simple_property.rb +2 -0
  110. data/test/{models → rails/models}/task.rb +1 -1
  111. data/test/{models → rails/models}/user.rb +1 -2
  112. data/test/{playing_around_in_a_console.txt → rails/playing_around_in_a_console.txt} +0 -0
  113. data/test/{schema.rb → rails/schema.rb} +14 -0
  114. data/test/{test.swf → rails/test.swf} +0 -0
  115. data/test/rails/test_active_foo.rb +81 -0
  116. data/test/{test_ruboss_rails_integration_functional.rb → rails/test_ruboss_rails_integration_functional.rb} +4 -9
  117. data/test/{to_fxml_test.rb → rails/test_to_fxml.rb} +35 -37
  118. data/test/rails/test_to_json.rb +23 -0
  119. data/test/{views → rails/views}/notes/empty_params_action.html.erb +0 -0
  120. data/test/{views → rails/views}/notes/index.html.erb +0 -0
  121. metadata +138 -103
  122. data/Generators +0 -5
  123. data/README.txt +0 -37
  124. data/config/hoe.rb +0 -72
  125. data/config/requirements.rb +0 -15
  126. data/lib/ruboss4ruby/generated_attribute.rb +0 -61
  127. data/lib/ruboss4ruby/ruboss_test_helpers.rb +0 -31
  128. data/lib/ruboss4ruby/version.rb +0 -11
  129. data/merb_generators/ruboss_config.rb +0 -105
  130. data/merb_generators/ruboss_controller.rb +0 -61
  131. data/merb_generators/ruboss_flex_app.rb +0 -69
  132. data/merb_generators/ruboss_resource_controller.rb +0 -4
  133. data/merb_generators/ruboss_scaffold.rb +0 -158
  134. data/merb_generators/templates/ruboss_config/ruboss.yml +0 -16
  135. data/merb_generators/templates/ruboss_resource_controller/controller.rb.erb +0 -49
  136. data/script/console +0 -10
  137. data/script/destroy +0 -14
  138. data/script/generate +0 -14
  139. data/script/txt2html +0 -82
  140. data/setup.rb +0 -1585
  141. data/tasks/deployment.rake +0 -34
  142. data/tasks/environment.rake +0 -7
  143. data/tasks/website.rake +0 -17
  144. data/test/helpers/controllers.log +0 -8
  145. data/test/helpers/models.log +0 -170
  146. data/test/helpers/test_helper.rb +0 -25
  147. data/test/helpers/unit_test_helper.rb +0 -23
  148. data/test/test.sqlite3 +0 -0
  149. data/test/test_active_foo.rb +0 -79
  150. data/test/test_swfobject_helper.rb +0 -63
  151. data/website/index.html +0 -63
  152. data/website/index.txt +0 -34
  153. data/website/javascripts/rounded_corners_lite.inc.js +0 -285
  154. data/website/stylesheets/screen.css +0 -138
  155. data/website/template.html.erb +0 -47
data/tasks/setup.rb ADDED
@@ -0,0 +1,279 @@
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 ADDED
@@ -0,0 +1,54 @@
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 ADDED
@@ -0,0 +1,47 @@
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 ADDED
@@ -0,0 +1,40 @@
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
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1,19 @@
1
+ # Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
2
+
3
+ apple:
4
+ name: Apple
5
+ amount: 12
6
+ price: 10.50
7
+ quantity: 12
8
+ available: true
9
+ delivered_on: <%= 2.days.ago %>
10
+ sold_on: <%= 2.hours.ago %>
11
+
12
+ orange:
13
+ name: Orange
14
+ amount: 15
15
+ price: 15.50
16
+ quantity: 15
17
+ available: false
18
+ delivered_on: <%= 2.days.ago %>
19
+ sold_on: <%= 2.hours.ago %>
File without changes
File without changes
@@ -6,7 +6,6 @@ ENV["RAILS_ENV"] = "test"
6
6
  require File.join(File.dirname(__FILE__), '..', 'controllers', 'application')
7
7
  require File.join(File.dirname(__FILE__), '..', 'controllers', 'notes_controller')
8
8
 
9
-
10
9
  config = YAML::load(IO.read(File.join(File.dirname(__FILE__), '..', 'database.yml')))['test']
11
10
  puts "config:\n#{config.inspect}"
12
11
  ActiveRecord::Base.configurations = config
@@ -20,13 +19,3 @@ load(schema_file) if File.exist?(schema_file)
20
19
 
21
20
  Test::Unit::TestCase.fixture_path = File.join(File.dirname(__FILE__), '..', 'fixtures')
22
21
  $:.unshift(Test::Unit::TestCase.fixture_path)
23
-
24
- class Test::Unit::TestCase
25
- # Turn off transactional fixtures if you're working with MyISAM tables in MySQL
26
- self.use_transactional_fixtures = true
27
-
28
- # Instantiated fixtures are slow, but give you @david where you otherwise would need people(:david)
29
- self.use_instantiated_fixtures = true
30
-
31
- # Add more helper methods to be used by all tests here...
32
- end
@@ -0,0 +1,61 @@
1
+ RAILS_ROOT = File.join(File.dirname(__FILE__), '..') unless defined? RAILS_ROOT
2
+
3
+ require 'rubygems'
4
+ require 'test/unit'
5
+
6
+ require 'active_support'
7
+ require 'active_support/test_case'
8
+ require 'active_record'
9
+ require 'active_record/fixtures'
10
+ require 'action_controller'
11
+ require 'action_controller/test_case'
12
+ require 'action_controller/assertions'
13
+ require 'action_controller/test_process'
14
+ require 'action_controller/integration'
15
+ require 'sqlite3'
16
+ require File.join(File.dirname(__FILE__), '..', '..', '..', 'lib', 'ruboss4ruby')
17
+ require File.join(File.dirname(__FILE__), '..', 'models', 'note')
18
+ require File.join(File.dirname(__FILE__), '..', 'models', 'user')
19
+ require File.join(File.dirname(__FILE__), '..', 'models', 'project')
20
+ require File.join(File.dirname(__FILE__), '..', 'models', 'location')
21
+ require File.join(File.dirname(__FILE__), '..', 'models', 'task')
22
+ require File.join(File.dirname(__FILE__), '..', 'models', 'simple_property')
23
+
24
+ class MockResponse
25
+ attr_reader :body, :content_type
26
+
27
+ def initialize(body, content_type = 'xml')
28
+ @body = body
29
+ @content_type = content_type
30
+ end
31
+
32
+ end
33
+
34
+ class Test::Unit::TestCase #:nodoc:
35
+ # Turn off transactional fixtures if you're working with MyISAM tables in MySQL
36
+ self.use_transactional_fixtures = true
37
+
38
+ # Instantiated fixtures are slow, but give you @david where you otherwise would need people(:david)
39
+ self.use_instantiated_fixtures = true
40
+
41
+ # Add more helper methods to be used by all tests here...
42
+
43
+ # Use this to test xml or fxml responses in unit tests. For example,
44
+ # set_response_to user.to_fxml
45
+ # assert_xml_select 'user name', 'quentin'
46
+ def set_response_to(response, content_type = 'xml')
47
+ @response = MockResponse.new(response, content_type)
48
+ end
49
+
50
+ # Make xml functional testing work.
51
+ # From http://weblog.jamisbuck.org/2007/1/4/assert_xml_select
52
+ def xml_document
53
+ @xml_document ||= HTML::Document.new(@response.body, false, true)
54
+ end
55
+
56
+ def assert_xml_select(*args, &block)
57
+ @html_document = xml_document
58
+ assert_select(*args, &block)
59
+ end
60
+
61
+ end
@@ -0,0 +1,30 @@
1
+ RAILS_ROOT = File.join(File.dirname(__FILE__), '..') unless defined? RAILS_ROOT
2
+
3
+ $:.unshift(File.dirname(__FILE__) + '/../..')
4
+ $:.unshift(File.dirname(__FILE__) + '/../../lib')
5
+ schema_file = File.join(File.dirname(__FILE__), '..', 'schema.rb')
6
+
7
+ require 'rubygems'
8
+ require 'test/unit'
9
+
10
+ require 'active_support'
11
+ require 'active_support/test_case'
12
+ require 'active_record'
13
+ require 'active_record/fixtures'
14
+ require 'action_controller'
15
+ require 'action_controller/test_case'
16
+ require 'action_controller/assertions'
17
+ require 'action_controller/test_process'
18
+ require 'action_controller/integration'
19
+ require 'sqlite3'
20
+
21
+ require File.join(File.dirname(__FILE__), '..', '..', '..', 'lib', 'ruboss4ruby')
22
+
23
+ config = YAML::load(IO.read(File.join(File.dirname(__FILE__), '..', 'database.yml')))[ENV['DB'] || 'test']
24
+ ActiveRecord::Base.configurations = config
25
+ ActiveRecord::Base.establish_connection(config)
26
+
27
+ load(schema_file) if File.exist?(schema_file)
28
+
29
+ Test::Unit::TestCase.fixture_path = File.join(File.dirname(__FILE__), '..', 'fixtures')
30
+ $:.unshift(Test::Unit::TestCase.fixture_path)
File without changes
File without changes
File without changes
@@ -1,6 +1,4 @@
1
1
  class Project < ActiveRecord::Base
2
2
  belongs_to :user
3
- has_many :tasks
4
-
5
- default_fxml_includes :tasks
3
+ has_many :tasks
6
4
  end
@@ -0,0 +1,2 @@
1
+ class SimpleProperty < ActiveRecord::Base
2
+ end
@@ -3,7 +3,7 @@ class Task < ActiveRecord::Base
3
3
  belongs_to :location
4
4
  belongs_to :user
5
5
 
6
- default_fxml_methods :is_active
6
+ default_methods :is_active
7
7
 
8
8
  def is_active
9
9
  case
@@ -4,8 +4,7 @@ class User < ActiveRecord::Base
4
4
  has_many :projects
5
5
  has_many :locations
6
6
 
7
- default_fxml_methods :full_name, :has_nothing_to_do
8
- default_fxml_includes :tasks, :projects
7
+ default_methods :full_name, :has_nothing_to_do
9
8
 
10
9
  validates_length_of :login, :maximum => 10
11
10
 
@@ -11,6 +11,7 @@
11
11
 
12
12
  ActiveRecord::Schema.define(:version => 20080729045550) do
13
13
 
14
+ # standard pomodo models
14
15
  create_table "locations", :force => true do |t|
15
16
  t.string "name"
16
17
  t.text "notes"
@@ -60,4 +61,17 @@ ActiveRecord::Schema.define(:version => 20080729045550) do
60
61
  t.datetime "updated_at"
61
62
  end
62
63
 
64
+ # all simple properties test model
65
+ create_table "simple_properties", :force => true do |t|
66
+ t.string "name"
67
+ t.integer "amount"
68
+ t.float "price"
69
+ t.decimal "quantity"
70
+ t.boolean "available"
71
+ t.date "delivered_on"
72
+ t.datetime "created_at"
73
+ t.datetime "updated_at"
74
+ t.time "sold_on"
75
+ end
76
+
63
77
  end
File without changes