spiderfw 0.6.14 → 0.6.15

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 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