spiderfw 0.6.14 → 0.6.15

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,3 +1,7 @@
1
+ = 0.6.15
2
+ == 9 August, 2011
3
+ * Various fixes and enhancements
4
+
1
5
  = 0.6.14
2
6
  == 4 August, 2011
3
7
  * Installer and Windows fixes
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.6.14
1
+ 0.6.15
@@ -11,4 +11,5 @@ Spider::Template.register_namespace('config_editor', Spider::ConfigEditor)
11
11
 
12
12
 
13
13
  require 'apps/config_editor/controllers/config_editor_controller'
14
- require 'apps/config_editor/widgets/edit/edit'
14
+ require 'apps/config_editor/widgets/edit/edit'
15
+ require 'apps/config_editor/widgets/edit_bool/edit_bool'
@@ -75,7 +75,13 @@ module Spider; module ConfigEditor
75
75
  end
76
76
 
77
77
  def create_edit_widget(key, option)
78
- w = Edit.new(@request, @response, @scene)
78
+ wclass = case option[:params][:type].name
79
+ when 'Spider::Bool', 'Spider::DataTypes::Bool'
80
+ EditBool
81
+ else
82
+ Edit
83
+ end
84
+ w = wclass.new(@request, @response, @scene)
79
85
  w.attributes[:name] = key
80
86
  w.attributes[:option] = option
81
87
  w.widget_init
@@ -0,0 +1,8 @@
1
+ module Spider; module ConfigEditor
2
+
3
+ class EditBool < Edit
4
+
5
+
6
+ end
7
+
8
+ end; end
@@ -0,0 +1,5 @@
1
+ <div>
2
+ <label>{ @name }</label>
3
+ _(Yes) <input type="radio" name="options[{ @name }]" value="1">
4
+ _(No) <input type="radio" name="options[{ @name }]" value="0">
5
+ </div>
@@ -492,9 +492,16 @@ Spider.defineWidget = function(name, parent, w){
492
492
  Spider.Controller = Class.extend({
493
493
 
494
494
  init: function(){
495
- var loc = ''+document.location;
496
- var slashPos = loc.lastIndexOf('/');
497
- url = loc.substr(0, slashPos);
495
+ var loc = $('link[rel=index]').attr('href');
496
+ if (loc){
497
+ if (loc.substr(loc.length - 5) == 'index') loc = loc.substr(0, loc.length - 5);
498
+ url = loc;
499
+ }
500
+ else{
501
+ var loc = ''+document.location;
502
+ var slashPos = loc.lastIndexOf('/');
503
+ url = loc.substr(0, slashPos);
504
+ }
498
505
  this.setUrl(url);
499
506
  this.currentAction = loc.substr(slashPos+1);
500
507
 
@@ -508,6 +515,11 @@ Spider.Controller = Class.extend({
508
515
 
509
516
  remote: function(method, params, callback, options){
510
517
  var args = Array.prototype.slice.call(arguments);
518
+ if ($.isFunction(params)){
519
+ options = callback;
520
+ callback = params;
521
+ params = null;
522
+ }
511
523
  if (!callback) callback = function(){};
512
524
  var url = this.url+'/'+method+'.json';
513
525
  var defaults = {
@@ -764,3 +776,11 @@ if(!window.console) {
764
776
  this.dir = function(str) {};
765
777
  };
766
778
  }
779
+
780
+ function basename(path){
781
+ return path.replace(/\\/g, '/').replace(/.*\//, '');
782
+ }
783
+
784
+ function dirname(path){
785
+ return path.replace(/\\/g, '/').replace(/\/[^\/]*$/, '');
786
+ }
@@ -1,6 +1,7 @@
1
1
  require 'apps/master/controllers/server_controller'
2
2
  require 'apps/master/controllers/login_controller'
3
3
  require 'json'
4
+ require 'socket'
4
5
 
5
6
 
6
7
  module Spider; module Master
@@ -342,6 +343,11 @@ module Spider; module Master
342
343
  install.apps = @request.params['apps']
343
344
  install.interval = @request.params['interval']
344
345
  install.configuration = decompress_string(@request.params['configuration'])
346
+ curr_ip = install.ip_address
347
+ install.ip_address = @request.env['REMOTE_ADDR']
348
+ if install.ip_address != curr_ip
349
+ install.hostname = Socket::getaddrinfo(install.ip_address,nil)[0][2]
350
+ end
345
351
  install.save
346
352
  log_lines = JSON.parse(@request.params['log'])
347
353
  log_lines.each do |log|
@@ -5,6 +5,8 @@ module Spider; module Master
5
5
  element :name, String, :label => _('Name')
6
6
  choice :customer, Customer, :add_multiple_reverse => :installations
7
7
  element :apps, Text, :hidden => true
8
+ element :ip_address, String
9
+ element :hostname, String
8
10
  element :configuration, Text, :hidden => true
9
11
  element :last_check, DateTime, :hidden => true
10
12
  element :interval, Fixnum, :hidden => true
@@ -21,10 +21,15 @@
21
21
  <a href="?edit" class="manage edit">_(Edit)</a>
22
22
  </div>
23
23
  <div class="details">
24
- _(Last check-in): { @installation.last_check.lformat(:short) }
25
- <tpl:pass sp:if="@installation.interval">
26
- _(Next check-in): { (@installation.last_check + @installation.interval).lformat(:short) }
27
- </tpl:pass>
24
+ <div id="last-check-in">
25
+ _(Last check-in): { @installation.last_check.lformat(:short) }
26
+ <tpl:pass sp:if="@installation.interval">
27
+ _(Next check-in): { (@installation.last_check + @installation.interval).lformat(:short) }
28
+ </tpl:pass>
29
+ </div>
30
+ <div id="host-info">
31
+ IP: { @installation.ip_address } ({ @installation.hostname })
32
+ </div>
28
33
  </div>
29
34
  <core:tabs id="tabs">
30
35
  <tab label="_(Apps)" id="apps">
@@ -1,11 +1,14 @@
1
+ <!DOCTYPE html>
1
2
  <html>
2
3
  <head>
3
- <script sp:each='@assets[:js] |script|' type="text/javascript" src="{ script }"></script>
4
- <link sp:each='@assets[:css] |css_file|' rel='stylesheet' href='{ css_file }' />
4
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
5
+ <tpl:output-meta />
6
+ <tpl:output-assets type="css" />
5
7
  </head>
6
8
  <body>
7
9
  <div id="content">
8
10
  <sp:yield />
9
11
  </div>
12
+ <tpl:output-assets type="js" />
10
13
  </body>
11
14
  </html>
data/lib/spiderfw/app.rb CHANGED
@@ -37,7 +37,7 @@ module Spider
37
37
  @version = Gem::Version.new(@version.to_s) if @version && !@version.is_a?(Gem::Version)
38
38
  spec_path = File.join(@path, "#{@short_name}.appspec")
39
39
  load_spec(spec_path) if File.exists?(spec_path)
40
- @route_url ||= Inflector.underscore(self.name)
40
+ @route_url ||= Inflector.underscore(self.short_name)
41
41
  @label ||= @short_name.split('_').each{ |p| p[0] = p[0].chr.upcase }.join(' ')
42
42
  @gettext_parsers ||= []
43
43
  @gettext_dirs ||= ['lib','bin','controllers','models','views','widgets','public']
@@ -8,11 +8,27 @@ class ConfigCommand < CmdParse::Command
8
8
  list = CmdParse::Command.new( 'list', false )
9
9
  list.short_desc = _("List configuration options")
10
10
  list.options = CmdParse::OptionParserWrapper.new do |opt|
11
+ opt.on("--info", _("Show info"), "-i"){ |i|
12
+ @info = true
13
+ }
11
14
  end
12
15
 
13
16
  list.set_execution_block do |args|
14
- require 'spiderfw'
15
- Spider.config.options.sort.each{ |o| puts o }
17
+ require 'spiderfw/spider'
18
+ Spider.init_base
19
+ search = args.first
20
+ max_len = 0
21
+ opts = Spider.config.options_list
22
+ opts.each{ |o| max_len = o.length if o.length > max_len }
23
+ opts.sort.each{ |o|
24
+ next if search && o.index(search) != 0
25
+ str = o.ljust(max_len + 2)
26
+ if @info
27
+ option = Spider.config.option(o)
28
+ str += " #{option[:description]}" if option
29
+ end
30
+ puts str
31
+ }
16
32
  end
17
33
 
18
34
  self.add_command(list)
@@ -20,7 +36,8 @@ class ConfigCommand < CmdParse::Command
20
36
  info = CmdParse::Command.new('info', false)
21
37
  info.short_desc = _("Get information about a configuration option")
22
38
  info.set_execution_block do |args|
23
- require 'spiderfw'
39
+ require 'spiderfw/spider'
40
+ Spider.init_base
24
41
  option = Spider.config.option(args.first)
25
42
  if option && option[:params]
26
43
  print args[0]
@@ -43,7 +60,8 @@ class ConfigCommand < CmdParse::Command
43
60
  get = CmdParse::Command.new('get', false)
44
61
  get.short_desc = _("Get the current value of a configuration option")
45
62
  get.set_execution_block do |args|
46
- require 'spiderfw'
63
+ require 'spiderfw/spider'
64
+ Spider.init_base
47
65
  puts Spider.conf.get(args.first)
48
66
  end
49
67
 
@@ -50,6 +50,22 @@ class TestCommand < CmdParse::Command
50
50
  end
51
51
  self.add_command(self_cmd)
52
52
 
53
+ issue = CmdParse::Command.new('issue', false)
54
+ issue.short_desc = _("Test for an issue")
55
+ issue.set_execution_block do |args|
56
+ id = args.first
57
+ require 'spiderfw/spider'
58
+ require 'spiderfw/test'
59
+
60
+ test_path = File.join($SPIDER_PATH, 'test', 'issues')
61
+ issue_no = id.rjust(5, "0")
62
+ Dir.glob(File.join(test_path, "#{issue_no}-*")).each do |f|
63
+ require f
64
+ end
65
+
66
+ end
67
+ self.add_command(issue)
68
+
53
69
 
54
70
  end
55
71
 
@@ -162,7 +162,7 @@ module Spider
162
162
  end
163
163
  end
164
164
 
165
- def options
165
+ def options_list
166
166
  options = []
167
167
  def iterate_options(src, prefix, dst)
168
168
  src.each do |key, val|
@@ -120,7 +120,7 @@ module Spider; module Model
120
120
  def self.app
121
121
  return @app if @app
122
122
  app = self
123
- while !app.include?(Spider::App)
123
+ while app && !app.include?(Spider::App)
124
124
  app = app.parent_module
125
125
  end
126
126
  @app = app
@@ -1061,6 +1061,10 @@ module Spider; module Model
1061
1061
  st = self.use_storage
1062
1062
  return st ? get_storage(st) : get_storage
1063
1063
  end
1064
+
1065
+ def self.storage=(val)
1066
+ @storage = val
1067
+ end
1064
1068
 
1065
1069
  # Returns an instancethe storage corresponding to the storage_string if it is given,
1066
1070
  # or of the default storage otherwise.
@@ -2154,6 +2158,10 @@ module Spider; module Model
2154
2158
  yield
2155
2159
  end
2156
2160
  end
2161
+
2162
+ def saving?
2163
+ !@_saving.nil?
2164
+ end
2157
2165
 
2158
2166
  # Loads the object from the storage
2159
2167
  # Acceptable arguments are:
@@ -994,7 +994,10 @@ module Spider; module Model; module Mappers
994
994
  had_schema = schema ? true : false
995
995
  schema ||= DbSchema.new
996
996
  n = @model.name.sub('::Models', '')
997
- n.sub!(@model.app.name, @model.app.short_prefix) if @model.app.short_prefix
997
+ app = @model.app
998
+ app_name = app.name if app
999
+ short_prefix = app.short_prefix if app
1000
+ n.sub!(app_name, short_prefix) if short_prefix
998
1001
  schema.table ||= @model.attributes[:db_table] || @storage.table_name(n)
999
1002
  integrated_pks = []
1000
1003
  @model.each_element do |element|
@@ -311,6 +311,7 @@ module Spider; module Model
311
311
  def save_element_associations(obj, element, mode)
312
312
  our_element = element.attributes[:reverse]
313
313
  val = obj.get(element)
314
+ return if !element.multiple? && val.saving?
314
315
  if element.attributes[:junction]
315
316
  their_element = element.attributes[:junction_their_element]
316
317
  if val.model != element.model # dereferenced junction
@@ -297,7 +297,7 @@ module Spider; module Model; module Storage
297
297
  # Utility methods
298
298
 
299
299
  def sequence_file_path(name)
300
- path = 'var/sequences/'+name
300
+ path = File.join(Spider.paths[:var], 'sequences', name)
301
301
  return path
302
302
  end
303
303
 
@@ -140,8 +140,9 @@ module Spider
140
140
  return
141
141
  end
142
142
  repo = Git.open(home_path)
143
- Spider.output _("Fetching %s from %s") % [spec.app_id, spec.git_repo]
144
- repo_url = spec.git_repo
143
+ repo_url = spec.git_repo_rw || spec.git_repo
144
+ Spider.output _("Fetching %s from %s") % [spec.app_id, repo_url]
145
+
145
146
  if options[:ssh_user] && repo_url =~ /ssh:\/\/([^@]+@)?(.+)/
146
147
  repo_url = "ssh://#{options[:ssh_user]}@#{$2}"
147
148
  end
@@ -304,8 +305,19 @@ module Spider
304
305
  app_path = File.join(home_path, "apps/#{spec.id}")
305
306
  tmp_path = File.join(home_path, 'tmp')
306
307
  FileUtils.mkdir_p(tmp_path)
307
- tmp_app_path = File.join(tmp_path, "#{spec.id}-update-#{DateTime.now}")
308
- FileUtils.mv(app_path, tmp_app_path)
308
+ tmp_app_path = File.join(tmp_path, "#{spec.id}-update-#{DateTime.now.strftime('%Y%m%d-%H%M')}")
309
+ begin
310
+ FileUtils.mv(app_path, tmp_app_path)
311
+ rescue Errno::EACCESS
312
+ if RUBY_PLATFORM =~ /win32|mingw/
313
+ Spider.output(
314
+ _("Can't update #{spec.id} app: ensure you have no files or folders of this app open"),
315
+ :ERROR
316
+ )
317
+ else
318
+ Spider.output exc, :ERROR
319
+ end
320
+ end
309
321
  begin
310
322
  pack_install(spec, home_path)
311
323
  FileUtils.rm_rf(tmp_app_path)
@@ -559,7 +559,7 @@ module Spider
559
559
  extensions.each do |ext|
560
560
  full = path
561
561
  full += '.'+ext if ext
562
- return full if (File.exist?(full))
562
+ return full if File.file?(full)
563
563
  end
564
564
  return nil
565
565
  end
@@ -605,7 +605,7 @@ module Spider
605
605
  else
606
606
  app = owner_class.app if (owner_class && owner_class.app)
607
607
  end
608
- return Resource.new(cur_path+'/'+path, owner_class) if cur_path && File.exist?(cur_path+'/'+path) # !app
608
+ return Resource.new(cur_path+'/'+path, owner_class) if cur_path && File.file?(cur_path+'/'+path) # !app
609
609
  raise "Can't find owner app for resource #{path}" unless app
610
610
  search_locations = resource_search_locations(resource_type, app)
611
611
  search_paths.each do |p|
@@ -777,14 +777,16 @@ module Spider
777
777
  end
778
778
 
779
779
  def locale
780
- c_l = Spider.conf.get('locale')
781
- return c_l if c_l
780
+ unless Thread.current[:current_languages] # Locale sets this
781
+ c_l = Spider.conf.get('locale')
782
+ return c_l if c_l
783
+ end
782
784
  begin
783
785
  @current_locale = Locale.current[0]
784
786
  rescue
785
787
  # There are problems with subsequent requests on Windows,
786
788
  # so use cached locale if Locale.current fails
787
- @current_locale || 'en'
789
+ @current_locale || Locale::Tag.parse('en')
788
790
  end
789
791
  end
790
792
 
@@ -3,7 +3,7 @@ require 'spiderfw/templates/template_blocks'
3
3
  module Spider; module TemplateBlocks
4
4
 
5
5
  class HTML < Block
6
- HTML_NO_CLOSE = ['br', 'img', 'input']
6
+ HTML_NO_CLOSE = ['br', 'img', 'input', 'meta']
7
7
 
8
8
  def compile(options={})
9
9
  c = ""
@@ -0,0 +1,20 @@
1
+ require 'spiderfw/templates/template_blocks'
2
+
3
+ module Spider; module TemplateBlocks
4
+
5
+ class LayoutMeta < Block
6
+
7
+ def compile(options={})
8
+ init = ""
9
+ c = ""
10
+ type = @el.get_attribute('type')
11
+ c += "output_meta"
12
+ c+= "(:#{type})" if type
13
+ c += "\n"
14
+ return CompiledBlock.new(init, c)
15
+ end
16
+
17
+ end
18
+
19
+
20
+ end; end
@@ -345,6 +345,14 @@ module Spider
345
345
 
346
346
  module LayoutScene
347
347
 
348
+ def output_meta(type=nil)
349
+ type ||= :default
350
+ case type
351
+ when :default
352
+ $out << "<link rel=\"index\" href=\"#{self.controller[:request_url]}\">"
353
+ end
354
+ end
355
+
348
356
  def output_assets(type=nil)
349
357
  types = type ? [type] : self.assets.keys
350
358
  use_cdn = Spider.conf.get('assets.use_cdn')
@@ -936,7 +936,7 @@ module Spider
936
936
  if type_or_str.is_a?(Symbol)
937
937
  @type = type_or_str
938
938
  else
939
- @type = parse(type_or_str.to_s)
939
+ parse(type_or_str.to_s)
940
940
  end
941
941
  end
942
942
 
@@ -28,7 +28,9 @@ module Spider
28
28
  elsif el.name == 'tpl:output'
29
29
  block = :Output
30
30
  elsif el.name == 'tpl:output-assets'
31
- block = :LayoutAssets
31
+ block = :LayoutAssets
32
+ elsif el.name == 'tpl:output-meta'
33
+ block = :LayoutMeta
32
34
  elsif el.name == 'sp:render'
33
35
  block = :Render
34
36
  elsif el.name == 'sp:run'
@@ -212,6 +214,7 @@ require 'spiderfw/templates/blocks/debugger'
212
214
  require 'spiderfw/templates/blocks/parent_context'
213
215
  require 'spiderfw/templates/blocks/output'
214
216
  require 'spiderfw/templates/blocks/layout_assets'
217
+ require 'spiderfw/templates/blocks/layout_meta'
215
218
  require 'spiderfw/templates/blocks/lambda'
216
219
  require 'spiderfw/templates/blocks/recurse'
217
220
 
@@ -0,0 +1,16 @@
1
+ require 'spiderfw/model/storage/db/db_storage'
2
+
3
+ module Spider; module Test
4
+
5
+ class DbStorage < Spider::Model::Storage::Db::DbStorage
6
+
7
+ def initialize
8
+ super('stub')
9
+ end
10
+
11
+ def parse_url(url)
12
+ end
13
+
14
+ end
15
+
16
+ end; end
data/lib/spiderfw/test.rb CHANGED
@@ -1,6 +1,20 @@
1
+ require 'tmpdir'
2
+ require 'fileutils'
1
3
  require 'spiderfw/test/page_object'
2
4
 
5
+
3
6
  module Spider; module Test
7
+
8
+ def self.setup_env
9
+ @tmpdir = File.join(Dir.tmpdir, 'spider_test')
10
+ FileUtils.rm_rf(@tmpdir) if File.exists?(@tmpdir)
11
+ FileUtils.mkdir(@tmpdir)
12
+ Spider.setup_paths(@tmpdir)
13
+ end
14
+
15
+ def self.teardown_env
16
+ FileUtils.rm_rf(@tmpdir)
17
+ end
4
18
 
5
19
  def self.env
6
20
  @env ||= {}
@@ -80,10 +94,19 @@ module Spider; module Test
80
94
  models = [app_or_model]
81
95
  end
82
96
  models.each do |m|
83
- m.use_storage 'stub://stub'
97
+ m.use_storage 'stub:stub://stub'
84
98
  end
85
99
  end
86
100
 
87
101
 
88
102
  end; end
89
103
 
104
+ require 'spiderfw/controller/controller'
105
+ require 'spiderfw/config/options/spider'
106
+ begin
107
+ require 'ruby-debug'
108
+ Debugger.start
109
+ rescue
110
+ end
111
+ require 'spiderfw/test/extensions/db_storage'
112
+ Spider::Test.setup_env
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spiderfw
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
4
+ hash: 25
5
+ prerelease:
5
6
  segments:
6
7
  - 0
7
8
  - 6
8
- - 14
9
- version: 0.6.14
9
+ - 15
10
+ version: 0.6.15
10
11
  platform: ruby
11
12
  authors:
12
13
  - Ivan Pirlik
@@ -14,16 +15,18 @@ autorequire:
14
15
  bindir: bin
15
16
  cert_chain: []
16
17
 
17
- date: 2011-08-04 00:00:00 +02:00
18
+ date: 2011-08-09 00:00:00 +02:00
18
19
  default_executable: spider
19
20
  dependencies:
20
21
  - !ruby/object:Gem::Dependency
21
22
  name: cmdparse
22
23
  prerelease: false
23
24
  requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
24
26
  requirements:
25
27
  - - ">"
26
28
  - !ruby/object:Gem::Version
29
+ hash: 15
27
30
  segments:
28
31
  - 2
29
32
  - 0
@@ -35,9 +38,11 @@ dependencies:
35
38
  name: fast_gettext
36
39
  prerelease: false
37
40
  requirement: &id002 !ruby/object:Gem::Requirement
41
+ none: false
38
42
  requirements:
39
43
  - - ">="
40
44
  - !ruby/object:Gem::Version
45
+ hash: 17
41
46
  segments:
42
47
  - 0
43
48
  - 5
@@ -49,9 +54,11 @@ dependencies:
49
54
  name: hpricot
50
55
  prerelease: false
51
56
  requirement: &id003 !ruby/object:Gem::Requirement
57
+ none: false
52
58
  requirements:
53
59
  - - ">"
54
60
  - !ruby/object:Gem::Version
61
+ hash: 27
55
62
  segments:
56
63
  - 0
57
64
  - 8
@@ -62,9 +69,11 @@ dependencies:
62
69
  name: json_pure
63
70
  prerelease: false
64
71
  requirement: &id004 !ruby/object:Gem::Requirement
72
+ none: false
65
73
  requirements:
66
74
  - - ">"
67
75
  - !ruby/object:Gem::Version
76
+ hash: 13
68
77
  segments:
69
78
  - 1
70
79
  - 1
@@ -75,9 +84,11 @@ dependencies:
75
84
  name: uuidtools
76
85
  prerelease: false
77
86
  requirement: &id005 !ruby/object:Gem::Requirement
87
+ none: false
78
88
  requirements:
79
89
  - - ">"
80
90
  - !ruby/object:Gem::Version
91
+ hash: 1
81
92
  segments:
82
93
  - 2
83
94
  - 1
@@ -88,9 +99,11 @@ dependencies:
88
99
  name: rufus-scheduler
89
100
  prerelease: false
90
101
  requirement: &id006 !ruby/object:Gem::Requirement
102
+ none: false
91
103
  requirements:
92
104
  - - ">"
93
105
  - !ruby/object:Gem::Version
106
+ hash: 15
94
107
  segments:
95
108
  - 1
96
109
  - 0
@@ -101,9 +114,11 @@ dependencies:
101
114
  name: mime-types
102
115
  prerelease: false
103
116
  requirement: &id007 !ruby/object:Gem::Requirement
117
+ none: false
104
118
  requirements:
105
119
  - - ">"
106
120
  - !ruby/object:Gem::Version
121
+ hash: 15
107
122
  segments:
108
123
  - 1
109
124
  - 0
@@ -114,9 +129,11 @@ dependencies:
114
129
  name: locale
115
130
  prerelease: false
116
131
  requirement: &id008 !ruby/object:Gem::Requirement
132
+ none: false
117
133
  requirements:
118
134
  - - ">"
119
135
  - !ruby/object:Gem::Version
136
+ hash: 3
120
137
  segments:
121
138
  - 2
122
139
  - 0
@@ -127,9 +144,11 @@ dependencies:
127
144
  name: builder
128
145
  prerelease: false
129
146
  requirement: &id009 !ruby/object:Gem::Requirement
147
+ none: false
130
148
  requirements:
131
149
  - - ">"
132
150
  - !ruby/object:Gem::Version
151
+ hash: 1
133
152
  segments:
134
153
  - 2
135
154
  - 1
@@ -140,9 +159,11 @@ dependencies:
140
159
  name: macaddr
141
160
  prerelease: false
142
161
  requirement: &id010 !ruby/object:Gem::Requirement
162
+ none: false
143
163
  requirements:
144
164
  - - ">="
145
165
  - !ruby/object:Gem::Version
166
+ hash: 23
146
167
  segments:
147
168
  - 1
148
169
  - 0
@@ -154,9 +175,11 @@ dependencies:
154
175
  name: bundler
155
176
  prerelease: false
156
177
  requirement: &id011 !ruby/object:Gem::Requirement
178
+ none: false
157
179
  requirements:
158
180
  - - ">="
159
181
  - !ruby/object:Gem::Version
182
+ hash: 3
160
183
  segments:
161
184
  - 0
162
185
  version: "0"
@@ -166,9 +189,11 @@ dependencies:
166
189
  name: rake
167
190
  prerelease: false
168
191
  requirement: &id012 !ruby/object:Gem::Requirement
192
+ none: false
169
193
  requirements:
170
194
  - - ">"
171
195
  - !ruby/object:Gem::Version
196
+ hash: 5
172
197
  segments:
173
198
  - 0
174
199
  - 7
@@ -180,9 +205,11 @@ dependencies:
180
205
  name: ruby-debug
181
206
  prerelease: false
182
207
  requirement: &id013 !ruby/object:Gem::Requirement
208
+ none: false
183
209
  requirements:
184
210
  - - ">"
185
211
  - !ruby/object:Gem::Version
212
+ hash: 61
186
213
  segments:
187
214
  - 0
188
215
  - 9
@@ -232,6 +259,8 @@ files:
232
259
  - apps/config_editor/views/index.shtml
233
260
  - apps/config_editor/widgets/edit/edit.rb
234
261
  - apps/config_editor/widgets/edit/edit.shtml
262
+ - apps/config_editor/widgets/edit_bool/edit_bool.rb
263
+ - apps/config_editor/widgets/edit_bool/edit_bool.shtml
235
264
  - apps/core/admin/_init.rb
236
265
  - apps/core/admin/admin.rb
237
266
  - apps/core/admin/controllers/admin_controller.rb
@@ -1121,6 +1150,7 @@ files:
1121
1150
  - lib/spiderfw/templates/blocks/if.rb
1122
1151
  - lib/spiderfw/templates/blocks/lambda.rb
1123
1152
  - lib/spiderfw/templates/blocks/layout_assets.rb
1153
+ - lib/spiderfw/templates/blocks/layout_meta.rb
1124
1154
  - lib/spiderfw/templates/blocks/output.rb
1125
1155
  - lib/spiderfw/templates/blocks/parent_context.rb
1126
1156
  - lib/spiderfw/templates/blocks/pass.rb
@@ -1138,6 +1168,7 @@ files:
1138
1168
  - lib/spiderfw/templates/template_blocks.rb
1139
1169
  - lib/spiderfw/test/capybara.rb
1140
1170
  - lib/spiderfw/test/cucumber.rb
1171
+ - lib/spiderfw/test/extensions/db_storage.rb
1141
1172
  - lib/spiderfw/test/page_object.rb
1142
1173
  - lib/spiderfw/test/spec.rb
1143
1174
  - lib/spiderfw/test/stubs/mapper_stub.rb
@@ -1200,23 +1231,27 @@ rdoc_options: []
1200
1231
  require_paths:
1201
1232
  - lib
1202
1233
  required_ruby_version: !ruby/object:Gem::Requirement
1234
+ none: false
1203
1235
  requirements:
1204
1236
  - - ">="
1205
1237
  - !ruby/object:Gem::Version
1238
+ hash: 3
1206
1239
  segments:
1207
1240
  - 0
1208
1241
  version: "0"
1209
1242
  required_rubygems_version: !ruby/object:Gem::Requirement
1243
+ none: false
1210
1244
  requirements:
1211
1245
  - - ">="
1212
1246
  - !ruby/object:Gem::Version
1247
+ hash: 3
1213
1248
  segments:
1214
1249
  - 0
1215
1250
  version: "0"
1216
1251
  requirements:
1217
1252
  - "Optional dependencies: ripl, ripl-irb, ripl-multi_line, json, openssl, sqlite3, webrick, mongrel, ruby-oci8 >2.0, mysql, yui-compressor, home_run, cldr"
1218
1253
  rubyforge_project:
1219
- rubygems_version: 1.3.6
1254
+ rubygems_version: 1.4.2
1220
1255
  signing_key:
1221
1256
  specification_version: 3
1222
1257
  summary: A (web) framework