spiderfw 0.6.15 → 0.6.16

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,6 @@
1
+ = 0.6.16
2
+ * Bugfixes
3
+
1
4
  = 0.6.15
2
5
  == 9 August, 2011
3
6
  * Various fixes and enhancements
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.6.15
1
+ 0.6.16
@@ -45,13 +45,14 @@ module Spider; module Auth
45
45
  user = klass.restore(@request)
46
46
  if user
47
47
  @request.security[:users] << user
48
- if (params[:authentication])
48
+ if params[:authentication]
49
49
  user = nil unless user.authenticated?(params[:authentication])
50
50
  elsif (params[:check])
51
51
  begin
52
52
  c = params[:check].call(user)
53
53
  user = nil unless c == true
54
54
  raise Unauthorized.new(c, requested_class) if c.is_a?(String)
55
+ break
55
56
  rescue => exc
56
57
  user = nil
57
58
  unauthorized_exception = exc
@@ -62,7 +63,9 @@ module Spider; module Auth
62
63
  end
63
64
  end
64
65
  unless user
65
- raise (unauthorized_exception ? unauthorized_exception : Unauthorized).new(_("Please login first"), requested_class)
66
+ msg = Spider::GetText.in_domain('spider_auth'){ _("Please login first") }
67
+ kl = unauthorized_exception ? unauthorized_exception : Unauthorized
68
+ raise kl.new(msg, requested_class)
66
69
  end
67
70
  @request.user = user
68
71
  end
@@ -37,7 +37,7 @@ module Spider
37
37
  h = {}
38
38
  apps.each do |k, v|
39
39
  h[k] = {}
40
- h[k][:version] = v[:spec].version
40
+ h[k][:version] = v[:spec].version if v[:spec]
41
41
  h[k][:active] = true if active.include?(k)
42
42
  end
43
43
  h
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.short_name)
40
+ @route_url ||= Inflector.underscore(self.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']
@@ -117,12 +117,16 @@ module Spider
117
117
  return res ? res.path : nil
118
118
  end
119
119
 
120
- def url=(url)
121
- @url = url
122
- end
123
-
124
- def url
125
- @url || ''
120
+ # Returns the canonical url for this controller
121
+ def url(action=nil)
122
+ u = @default_route || ''
123
+ u += "/#{action}" if action
124
+ if @default_dispatcher
125
+ u = @default_dispatcher.url + '/' + u
126
+ elsif self.app
127
+ u = self.app.url + '/' + u
128
+ end
129
+ u
126
130
  end
127
131
 
128
132
 
@@ -197,12 +197,17 @@ module Spider
197
197
  end
198
198
 
199
199
  module ClassMethods
200
+ attr_accessor :default_route, :default_dispatcher
200
201
 
201
202
  def add_route(routes, path, dest=nil, options=nil)
202
203
  if ( path.is_a? Hash )
203
204
  path.each {|p,d| add_route(p, d)}
204
205
  else
205
206
  routes << [path, dest, options || {}]
207
+ if path.is_a?(String) && dest.respond_to?(:default_dispatcher=)
208
+ dest.default_dispatcher = self
209
+ dest.default_route = path
210
+ end
206
211
  end
207
212
  end
208
213
 
@@ -33,7 +33,7 @@ module Spider; module ControllerMixins
33
33
  return url
34
34
  end
35
35
 
36
- # Returns the http path needed to call the current controller & action.
36
+ # Returns the http path used to call the current controller & action.
37
37
  # Reverses any proxy mappings to the Controller#request_path.
38
38
  def request_path
39
39
  HTTPMixin.reverse_proxy_mapping(super)
@@ -84,8 +84,8 @@ module Spider; module HTTP
84
84
  controller_response.server_output = RackIO.new(rack_response_hash, controller_response, w)
85
85
  else
86
86
  w = StringIO.new
87
- controller_response.server_output = w
88
87
  rack_response_hash = {:body => w}
88
+ controller_response.server_output = RackIO.new(rack_response_hash, controller_response, w)
89
89
  end
90
90
 
91
91
 
@@ -48,6 +48,7 @@ module Spider; module Model
48
48
  has_pks = true if v
49
49
  pks[k.name] = model.prepare_value(k, v)
50
50
  end
51
+ orig_pks = pks.clone
51
52
  normalize_pks(model, pks)
52
53
  unless has_pks
53
54
  raise IdentityMapperException, "Can't get #{model} from IdentityMapper without all primary keys, #{values.inspect} given"
@@ -59,7 +60,7 @@ module Spider; module Model
59
60
  obj = current
60
61
  else
61
62
  # Spider.logger.debug("GETTING NEW #{model} FROM #{pks.inspect}")
62
- obj = model.new(pks)
63
+ obj = model.new(orig_pks)
63
64
  #@objects[model][pks] = obj
64
65
  end
65
66
  # obj = (@objects[model][pks] ||= model.new(pks))
@@ -152,6 +153,7 @@ module Spider; module Model
152
153
  model_pks.each do |k|
153
154
  if keys[k] && keys[k].is_a?(BaseModel)
154
155
  keys[k] = keys[k].class.primary_keys.length > 1 ? keys[k].primary_keys : keys[k].primary_keys[0]
156
+ keys[k] = keys[k].first if model.elements[k].type.primary_keys.length && keys[k].is_a?(Array)
155
157
  end
156
158
  end
157
159
  keys.keys.each do |k|
@@ -26,8 +26,8 @@ module Spider; module Model; module Storage; module Db
26
26
  def parse_url(url)
27
27
  # db:oracle://<username:password>:connect_role@<database>
28
28
  # where database is
29
- # the net8 connect string or
30
- # for Oracle client 10g or later, //hostname_or_ip:port_no/oracle_sid
29
+ # the net8 connect descriptor (TNS) or
30
+ # for Oracle client 10g or later, hostname_or_ip:port_no/oracle_sid
31
31
  if (url =~ /.+:\/\/(?:(.+):(.+)(?::(.+))?@)?(.+)/)
32
32
  @user = $1
33
33
  @pass = $2
@@ -1,9 +1,5 @@
1
1
  require 'oci8'
2
2
 
3
- # The default mapping to BigDecimal doesn't seem to work (as of ruby-oci8 2.0.4), reverting to Float until it's fixed
4
- OCI8::BindType::Mapping[:number_unknown_prec] = OCI8::BindType::Float
5
- OCI8::BindType::Mapping[:number_no_prec_setting] = OCI8::BindType::Float
6
-
7
3
  module Spider; module Model; module Storage; module Db; module Connectors
8
4
 
9
5
  module OCI8
@@ -13,7 +13,7 @@ module Spider; module Model
13
13
  matches = url.match(/^(.+?):\/\/(.+)/)
14
14
  adapter = matches[1]
15
15
  rest = matches[2]
16
- if (adapter =~ /(.+):(.+)/)
16
+ if adapter =~ /(.+):(.+)/
17
17
  connector = $1
18
18
  adapter = $2
19
19
  url = "#{adapter}://#{rest}"
@@ -37,7 +37,7 @@ module Spider; module Model
37
37
  RUBY_PLATFORM =~ /java/ ? 'jdbc' : 'oci8'
38
38
  end
39
39
  end
40
- if (connector)
40
+ if connector
41
41
  conn_mod_name = case connector
42
42
  when 'odbc'
43
43
  :ODBC
@@ -124,10 +124,19 @@ module Spider
124
124
  specs ||= []
125
125
  pre_setup(specs, options)
126
126
  specs.each do |spec|
127
- if spec.git_repo && options[:use_git]
128
- git_install(spec, home_path, options)
127
+ app_path = File.join(home_path, "apps/#{spec.app_id}")
128
+ if File.directory?(app_path)
129
+ if File.directory?(File.join(app_path, '.git'))
130
+ git_update(spec, home_path, options)
131
+ else
132
+ pack_update(spec, home_path, options)
133
+ end
129
134
  else
130
- pack_install(spec, home_path, options)
135
+ if spec.git_repo && options[:use_git]
136
+ git_install(spec, home_path, options)
137
+ else
138
+ pack_install(spec, home_path, options)
139
+ end
131
140
  end
132
141
  end
133
142
  post_setup(specs, options)
@@ -583,7 +583,7 @@ module Spider
583
583
  elsif (cur_path)
584
584
  if (path[0..1] == './')
585
585
  return Resource.new(first_found(extensions, File.dirname(cur_path)+path[1..-1]), owner_class)
586
- elsif (path[0..1] == '../')
586
+ elsif (path[0..2] == '../')
587
587
  return Resource.new(first_found(extensions, File.dirname(File.dirname(cur_path))+path[2..-1]), owner_class)
588
588
  end
589
589
  end
@@ -528,6 +528,7 @@ module Spider
528
528
  root.search('tpl:include').each do |incl|
529
529
  resource = Spider.find_resource(:views, incl.get_attribute('src'), @path, [@owner.class, @definer_class])
530
530
  src = resource.path
531
+ raise "Template #{@path} didn't find included '#{incl.get_attribute('src')}'" unless src
531
532
  @dependencies << src
532
533
  incl_el = self.get_el(src)
533
534
  assets = incl_el.children ? incl_el.children_of_type('tpl:asset') : []
@@ -38,7 +38,8 @@ class Integer
38
38
  end
39
39
  end
40
40
 
41
- def BigDecimal
41
+ require 'bigdecimal'
42
+ BigDecimal.class_eval do
42
43
  def to_json(options = nil) #:nodoc:
43
44
  to_f.to_json
44
45
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spiderfw
3
3
  version: !ruby/object:Gem::Version
4
- hash: 25
4
+ hash: 39
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 6
9
- - 15
10
- version: 0.6.15
9
+ - 16
10
+ version: 0.6.16
11
11
  platform: ruby
12
12
  authors:
13
13
  - Ivan Pirlik
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-08-09 00:00:00 +02:00
18
+ date: 2011-08-22 00:00:00 +02:00
19
19
  default_executable: spider
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency